我是xslt的新手。 我的xml代码是:
<tag1>
text1
<nestedTag Id="text2" />
text3
</tag1>
我想接收此输出:
文本1文本2文本3
我写了两个模板:
<xsl:template match="tag1">
<b>
<xsl:apply-templates select = "nestedTag" />
<xsl:value-of select="."/>
</b>
</xsl:template>
<xsl:template match="nestedTag">
<xsl:value-of select="@Id"/>
</xsl:template>
但是我明白了:
文本2文本1文本3
我的问题是:如何区分text1和text3?
答案 0 :(得分:1)
您的tag1
元素具有三个子节点,一个文本节点,一个元素节点和一个文本节点。通常,可以使用text()[1]
选择第一个文本节点,通常可以使用node()[1]
选择第一个子节点。
但是在您的示例环境中,使用XSLT即可替换
<xsl:apply-templates select = "nestedTag" />
<xsl:value-of select="."/>
使用
<xsl:apply-templates/>
那样将处理所有子节点,文本节点的内置模板将输出它们。