我有一个看起来像这样的xml:
<OuterTag> outerVal
<Name> value1 </Name>
<Desc> value2 </Desc>
</OuterTag>
我想检索外部标记的值(“outerVal”)。 当我使用
xsl:value-of select="OuterTag" />
我得到“outerValvalue1value2”。 我怎样才能只检索外部值?
答案 0 :(得分:1)
完整的解决方案:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output omit-xml-declaration="yes" method="text"/>
<xsl:template match="/">
<xsl:value-of select="normalize-space(OuterTag/text()[1])" />
</xsl:template>
</xsl:stylesheet>
输出:
outerVal
注意:空格在XML元素中很重要。这是一个样式表,显示OuterTag
及其子项中文本节点的位置/结构:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="text" />
<xsl:template match="OuterTag/text()">
<xsl:value-of select="concat('[', ., ']')" />
</xsl:template>
<xsl:template match="OuterTag/*/text()">
<xsl:value-of select="concat('(', ., ')')" />
</xsl:template>
</xsl:stylesheet>
输出:
[ outerVal
]( value1 )[
]( value2 )[
]
添加normalize-space
:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="text" />
<xsl:template match="OuterTag/text()">
<xsl:value-of select="concat('[', normalize-space(), ']')" />
</xsl:template>
<xsl:template match="OuterTag/*/text()">
<xsl:value-of select="concat('(', normalize-space(), ')')" />
</xsl:template>
</xsl:stylesheet>
产生以下结果:
[outerVal](value1)[](value2)[]
答案 1 :(得分:0)
尝试text():
<xsl:value-of select="OuterTag/text()" />
答案 2 :(得分:0)
使用此:<xsl:value-of select="OuterTag/text()"/>
答案 3 :(得分:0)
将此xpath调整为您的上下文
"/Outertag/text()[1]"
这将检索Outertag根节点的第一个文本节点。其他答案将向您展示如何获取Outertag上下文节点的所有文本子节点。