我需要一个特定的解决方案来解决我的XSLT问题,而且我一直在努力弄清楚如何让它运行起来.现在我的 XML结构如下 DataX DataY fieldyA/fieldy fieldxB/fieldx Data1 field11/field1 field22/field2 /Data1 Data2
<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>
我需要做的是追加< DataY>的内容. < field1的> < FIELD2>到内部数据字段的每个实例.不改变原始XML
像这样
A B 1 2 A B 3 4 A B 5 6
像这样,为了清晰起见我添加了空格.
我已经尝试了一些内在的每个陈述和其他一些事情.我没有体验过XSLT,但也许我在想它.我只是不确定如果使用for-each进行传递后如何获得A B数据.有什么想法吗?
这种转变:<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>
当应用于提供的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>
产生想要的,正确的结果(没有插入空格,因为它们是在“为了清晰”的问题中添加的):
AB12AB34AB56