我有以下xml
<root xmlns="">
<General>
<Data>
<Number>123456</Number>
<Date>2018-10-22</Data>
<LineRefer>0001</LineRefer>
<LineRefer>0002</LineRefer>
</Data>
<Data>
<Number>789456</Number>
<Date>2018-10-22</Data>
<LineRefer>0003</LineRefer>
<LineRefer>0004</LineRefer>
</Data>
</General>
<Services>
<Details>
<LineNumber>0001</LineNumber>
<Description>test description</Description>
</Details>
<Details>
<LineNumber>0002</LineNumber>
<Description>test description</Description>
</Details>
<Details>
<LineNumber>0003</LineNumber>
<Description>test description</Description>
</Details>
<Details>
<LineNumber>0004</LineNumber>
<Description>test description</Description>
</Details>
</root>
我希望我可以分组来获得这个结果
number 123456
0001测试说明
0002测试说明
number 789456
0003测试说明
0004测试说明
这是我的xsl for xml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<head>
<title>HTML Document Example</title>
</head>
<body>
<div class="page">
<xsl:for-each select="root" >
<xsl:for-each select="Services/Details" >
<ul>
<li><xsl:value-of select="LineNumber" /> | <xsl:value-of select="Description" /> </li>
</ul>
</xsl:for-each>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果
0001测试说明
0002测试说明
0003测试说明
0004测试说明
提前致谢
1 回答
你首先尝试选择
Services/Details
,这让你自己变得更加困难,因为你不得不担心分组 . 但是,General/Data
元素中的数据已经是"grouped",因此请从选择这些元素开始 .要获得相关
Services/Details
的详细信息,请先定义一个关键....然后,当位于
Data
元素上时,您可以获得所有相关的详细信息......试试这个XSLT
请参阅http://xsltfiddle.liberty-development.net/nc4NzRw以了解此情况 .
请注意,您的XML在
root
元素上显示xmlns=""
. 如果在您的实际XML中,此xmlns
不为空,则表示您的XML元素都在默认命名空间中,并且上述XSLT将不起作用 .如果是这种情况,则应更改XSLT以考虑命名空间 . 有很多关于如何在StackOverflow上处理XSLT 1.0中的默认命名空间的例子,但是当我感觉到Christmassy时,请看一下http://xsltfiddle.liberty-development.net/nc4NzRw/1的例子 .