我需要一个特定的解决方案来解决我的XSLT问题,而且我一直在努力弄清楚如何让它运行起来.现在我的XML结构如下
<DataX>
<DataY>
<fieldy>A</fieldy>
<fieldx>B</fieldx>
<Data1>
<field1>1</field1>
<field2>2</field2>
</Data1>
<Data2>
<field3>3</field3>
<field4>4</field4>
</Data2>
<Data3>
<field5>5</field5>
<field6>6</field6>
</Data3>
</DataY>
</DataX>
Run Code Online (Sandbox Code Playgroud)
我需要做的是将内容附加<DataY> <field1> <field2>
到内部数据字段的每个实例.不改变原始XML
像这样
A B 1 2 A B 3 4 A B 5 6
像这样,为了清晰起见我添加了空格.
我已经尝试了一些内在的每个陈述和其他一些事情.我没有体验过XSLT,但也许我在想它.我只是不确定如果使用for-each进行传递后如何获取AB数据.有什么想法吗?
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="vPrefix">
<xsl:for-each select="/*/DataY/*[not(starts-with(name(),'Data'))]">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:template match="/*/*/*[starts-with(name(),'Data')]">
<xsl:value-of select="concat($vPrefix, .)"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当应用于提供的XML文档时:
<DataX>
<DataY>
<fieldy>A</fieldy>
<fieldx>B</fieldx>
<Data1>
<field1>1</field1>
<field2>2</field2>
</Data1>
<Data2>
<field3>3</field3>
<field4>4</field4>
</Data2>
<Data3>
<field5>5</field5>
<field6>6</field6>
</Data3>
</DataY>
</DataX>
Run Code Online (Sandbox Code Playgroud)
产生想要的,正确的结果(没有插入空格,因为它们是在"为了清晰"的问题中添加的):
AB12AB34AB56
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1256 次 |
最近记录: |