【发布时间】:2012-08-01 14:50:36
【问题描述】:
我有:
XML
<TestCases>
<TestCase>
<TestCaseElement>
<Name><![CDATA[Start]]></Name>
<Role><![CDATA[TESTSTEP]]></Role>
</TestCaseElement>
<TestCaseElement>
<Name><![CDATA[Content]]></Name>
<Role><![CDATA[TESTSTEP]]></Role>
<Code>
<Line><![CDATA[some Content]></Line>
<Line><![CDATA[some Content]></Line>
</Code>
</TestCaseElement>
<TestCaseElement>
<Name><![CDATA[End]]></Name>
<Role><![CDATA[TESTSTEP]]></Role>
</TestCaseElement>
**n of these Start-Content-Stop Triplets are in the XML Document**
</TestCase>
</TestCases>
我想用 XSLT 对这些元素进行“分组”。
每个组应以 Start 开头,并应以 End 结尾 我的第一个想法是用这个解决方案做到这一点:stackoverflow combining xslt issue
这将是:
<xsl:for-each select="/TestCases/TestCase/TestCaseElement[../TestCaseElement[Name='Step-Start'] << . and . >> ../TestCaseElement[Name='Step-End']]">
但我认为我应该与 key 和/或 generate-id 分组并使用 following-sibling 和 preceding-sibling
我想要的输出:我希望所有内容都被开始和结束元素精确覆盖。
不清楚如何询问名称 Start,因为这是我想要“分组”的 TestCaseElement 下的一层?
如果某天有空,我如何访问每个组。
【问题讨论】:
-
您的预期输出显示为空。我认为这是一个编辑错误。请更正并显示预期输出。对此问题的任何回答都将基于 xsl:for-each-group 。我建议您搜索该说明并阅读它。
-
嗨,我已经编辑了所需的输出。不幸的是,它滑出了文本块。