解析文本我有一个这样的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