xslt - 如何从 XLST 中排除节点
问题描述
对不起,这是一个非常新手的问题。我真正的问题涉及将 HTML 转换为 Open Office XML,但这说明了我看到的问题。我想确保在我的处理中忽略“b”节点,即在结果输出的末尾没有得到 123。
XML:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl"?>
<a>
<hello-world>
<greeter>An XSLT Programmer</greeter>
<greeting>Hello, World!</greeting>
</hello-world>
<b>123
</b>
</a>
XSLT:
<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="hello-world">
<HTML><HEAD><TITLE></TITLE></HEAD><BODY><H1>
<xsl:value-of select="greeting"/>
</H1>
<xsl:apply-templates select="greeter"/>
</BODY></HTML>
</xsl:template>
<xsl:template match="greeter">
<DIV>from <I><xsl:value-of select="."/></I></DIV>
</xsl:template>
</xsl:stylesheet>
结果:
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE></TITLE>
</HEAD>
<BODY>
<H1>Hello, World!</H1>
<DIV>from <I>An XSLT Programmer</I></DIV>
</BODY>
</HTML>
123
解决方案
我看到您添加了答案,但认为我可以添加更多信息。
您的第一次尝试很好,您可以简单地添加另一个模板来忽略“b”节点。
<xsl:template match="b"/>
发生的情况是 XSLT 内置模板规则默认包含一个模板,该模板复制任何与您的模板未明确匹配的节点的文本。
参考:docstore.mik.ua/orelly/xml/xmlnut/ch08_07.htm
使用添加的模板查看转换的输出:https ://xsltfiddle.liberty-development.net/aixRus
推荐阅读
- css - React:动画三元输出组件
- swiftui - SwiftUI 本地化
- android - 防止数字在语言环境更新的 android 上从英语更改为阿拉伯语
- c - /proc/id/maps 中堆栈附近的堆
- python - 如何恢复到 python 2.7?
- ios - Info.plist 未复制到 DerivedData 导致 Xcode 中的编译错误
- amazon-web-services - 适用于 EC2、EMR、Redshift、RDS 的 AWS 开发工具包用例
- java - 面对 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
- go - 即使我得到一个着色器编译错误,所有着色器都可以正常工作。如何?
- css - 带有重复修饰符的 CSS 后代选择