我有一個看起來像這樣的XML:XSLT - 無需檢索它的內標籤的XML標記值
<OuterTag> outerVal
<Name> value1 </Name>
<Desc> value2 </Desc>
</OuterTag>
,我想找回外層標籤(「outerVal」)的值。 當我使用
xsl:value-of select="OuterTag" />
我得到 「outerValvalue1value2」。 我如何檢索只有外部值?
我有一個看起來像這樣的XML:XSLT - 無需檢索它的內標籤的XML標記值
<OuterTag> outerVal
<Name> value1 </Name>
<Desc> value2 </Desc>
</OuterTag>
,我想找回外層標籤(「outerVal」)的值。 當我使用
xsl:value-of select="OuterTag" />
我得到 「outerValvalue1value2」。 我如何檢索只有外部值?
嘗試文本():
<xsl:value-of select="OuterTag/text()" />
使用此:<xsl:value-of select="OuterTag/text()"/>
適應這個XPath對上下文
"/Outertag/text()[1]"
這將檢索Outertag根節點的第一個文本節點。其他答案顯示如何獲取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="/">
<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)[]
針對我定義爲社區wiki的基本問題+1 –