解析文本我有一個這樣的XML:XSLT:與標籤
<main>
text1 <tag>2</tag> text3
</main>
應通過XSLT中要變換:
<newMain>
text1 <tag2>2</tag2>text3
</newMain>
,但我不知道如何得到它。 你能幫我嗎?
感謝
蘭德
解析文本我有一個這樣的XML:XSLT:與標籤
<main>
text1 <tag>2</tag> text3
</main>
應通過XSLT中要變換:
<newMain>
text1 <tag2>2</tag2>text3
</newMain>
,但我不知道如何得到它。 你能幫我嗎?
感謝
蘭德
<xsl:template match="main | tag">
<xsl:element name="{name()}2">
<xs:apply-templates/>
</xsl:element>
</xsl:template>
就足夠了,如果你只是想追加 「2」 的元素的名稱。如果你想從內容中獲取元素「標籤」的數字,那麼做例如
<xsl:template match="main">
<xsl:element name="{name()}2">
<xs:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="tag">
<xsl:element name="{name()}{.}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
對不起我的錯:main2和'2'沒有任何關係。我改變了上面的XML。 – Randomize
這種轉變:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<my:reps>
<rep old="main" new="newMain"/>
<rep old="tag" new="tag2"/>
</my:reps>
<xsl:variable name="vReps" select="document('')/*/my:reps/*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*[name() = document('')/*/my:reps/*/@old]">
<xsl:element name="{$vReps[@old = name(current())]/@new}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
時所提供的XML文檔應用:
<main>
text1 <tag>2</tag> text3
</main>
產生想要的,正確的結果:
<newMain>
text1 <tag2>2</tag2> text3
</newMain>
你想爲這個特殊情況做這件事嗎?或者main2中的2從標籤內容中獲得它的值? – FailedDev
對不起我的錯:main2和'2'沒有任何關係。我改變了上面的XML。 – Randomize