我对 XSLT 处理器节点的方式感到困惑,假设我有一个像这样的 XML 文档:
<object>
<animal>
<man men="asd">man1</man>
<man>man2</man>
<man>man3</man>
<man>man4</man>
<cat>cat1</cat>
<cat>cat2</cat>
<cat>cat3</cat>
<cat>cat4</cat>
</animal>
<vehicule>
<car>car1</car>
<car>car2</car>
<car>car3</car>
<car>car4</car>
</vehicule>
</object>
当我有一个没有任何模板匹配的 XSLT(如下所示)时,它返回所有文本节点,没有属性节点,这没关系
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
</xsl:stylesheet>
但是当我有像下面这样的一个时,它不会返回任何内容:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="object">
</xsl:template>
</xsl:stylesheet>
是不是如果我有一个父节点的显式模板,我应该有一个父节点的所有子节点的显式模板?
你所看到的只是效果内置规则 http://www.w3.org/TR/xslt#built-in-rule,它输出节点的文本值并将模板应用于其所有子节点。
如果您覆盖内置模板,那么您的模板就会生效。你想要apply http://www.w3.org/TR/xslt#section-Applying-Template-Rules所有孩子的内置规则object
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="object">
<xsl:apply-templates select="*" />
</xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)