我有一个看起来像这样的xml:
<Person>
<Details>
<AddressDetails>
<Address>
<street>3</street>
</Address>
<Address>
<street>4</street>
</Address>
<Address>
<street>5</street>
</Address>
</AddressDetails>
</Details>
</Person>
我想将这个xml转换成这样的东西:
<Person>
<Details>
<AddressDetails>
<Address>
<Class>List</Class>
<Results "REPEATINGTYPE= LIST">
<Data>
Contains all the data that is present in the dynamic address list.
</Data>
<Data>
</Data>
</Results>
</Address>
</AddressDetails>
</Details>
</Person>
我写的XSL模板是:
<xsl:template match="/Person">
<Person>
<Details>
<AddressDetails>
<Address>
<Class>List</Class>
<Results REPEATINGTYPE= "LIST">
<xsl:for-each select="Address">
<Data>
<Street><xsl:value-of select="Street" /></Street>
</Data>
</Results>
</Address>
</AddressDetails>
</Details>
</Person>
</xsl:template>
但它没有拿起列表元素。有人可以帮忙吗?
修改
我得到的输出是:
<Person>
<Details>
<AddressDetails>
<Address>
<Class>List</Class>
</Address>
</AddressDetails>
</Details>
</Person>
答案 0 :(得分:0)
您发布的XSL无效:您没有xsl-for-each
的结束标记。
此外,<xsl:for-each select="Address">
不会从Person
的上下文中选择任何内容;您需要将其更改为<xsl:for-each select="Details/AddressDetails/Address">
。
最后,XML区分大小写:当源元素名为<xsl:value-of select="Street" />
时,street
不会返回任何内容。
答案 1 :(得分:0)
所以你想把所有<Values>
包裹在<Response>
的{{1}}内吗?
使用<AllResults><data>
的模板和其他所有内容的标识转换,例如:
<Response>