我有以下设置的XML内容(基本上,多行包含三个项
<line><li>1</li><li>2</li><li>3</li></line>
<line><li>a</li><li>b</li><li>c</li></line>
<line><li>x</li><li>y</li><li>z</li></line>
我想:
<line>
<item1>col1<item1><li>1</li>
<item2>col2<item1><li>2</li>
<item3>col3<item1><li>3</li>
</line>
<line>
<item1>col1<item1><li>a</li>
<item2>col2<item1><li>b</li>
<item3>col3<item1><li>c</li>
</line>
<line>
<item1>col1<item1><li>x</li>
<item2>col2<item1><li>y</li>
<item3>col3<item1><li>z</li>
</line>
基本上为ech线添加一列。 XSLT有助于实现这一结果吗? 非常感谢。
答案 0 :(得分:0)
我尝试了一个略微修改过的版本。我的输入XML是:
<message>
<line number="1"><li>1</li><li>2</li><li>3</li></line>
<line number="2"><li>x</li><li>y</li><li>z</li>
</line>
<line number="3"><li>a</li><li>b</li><li>c</li>
</line>
</message>
我的XSLT是:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="/message/line">
number: <xsl:value-of select="@number"/>
position: <xsl:value-of select="position()"/>
all items: <xsl:value-of select="."/>
item[3]: <xsl:value-of select="li[3]"/>
</xsl:for-each>
</xsl:template>
这会产生:
number: 1
position: 1
all items: 123
item[3]: 3
number: 2
position: 2
all items: xyz
item[3]: z
number: 3
position: 3
all items: abc
item[3]: c
我最初的想法是将所有项目放在变量中,然后对该变量执行第二次嵌套for-each。但它产生的是123(第一行),省略了
/message/line[1]/li
我获得:
<li>1</li>
<li>2</li>
<li>3</li>
这是期望的结果。 在我的XSLT中,我尝试用“select =”li [position()]“”替换“select =”。“”但它只会返回每行的第1项。
是否有任何解释,我应该更改什么以获得与我的xPath相同的结果?