我有此源XML:
<th>2018-Feb</th>
当我使用该功能时:
<th>Feb</th>
我得到下一个输出:ESPEU和y只想拥有ESP。
如何从特定节点<Book>
<Title>Harry Potter</Title>
<editorial>M<previous>Sort</previous></editorial>
<languaje>ESP<previous>EU</previous></languaje>
<nationality>ESP</nationality>
</Book>
删除所有值?
感谢所有人
答案 0 :(得分:0)
您的表情
<xsl:value-of select="Book/languaje"/>
选择languaje
元素的所有文本内容,其中包含
text()
节点和previous
节点本身的text()
元素text()
节点您可能想要text()[1]
节点(1)和text()[2]
(3)。
如果您可以使用 XSLT-2.0 或更高版本,则只需使用xsl:value
的高级功能(可以选择使用分隔符)来完成,即可处理多个值一次:
<xsl:value-of select="Book/languaje/text()" />
如果您只能使用 XSLT-1.0 ,因此只能使用XPath-1.0,则xsl:value
一次只能处理一个值。但是您至少有三种可能性:
在text()
元素的languaje
节点上循环:
<xsl:for-each select="Book/languaje/text()">
<xsl:value-of select="."/>
</xsl:for-each>
在所有languaje
的{{1}}节点上应用标准模板:
text()
将标准模板与<xsl:apply-templates select="Book/languaje/text()" />
元素的空模板结合应用于languaje
元素:
previous
这三种方法的输出应相同:
<xsl:apply-templates select="Book/languaje" />
<!-- And on the template level the following -->
<xsl:template match="languaje/previous" />