【发布时间】:2017-03-09 05:13:51
【问题描述】:
我有一个 XML 结构,其中 XML 架构不规则/未格式化。结构是这样的-
<Host>
<element1>type0</element1>
<element2>Fruits</element2>
....
<elementn>Price0</elementn>
<Menu>
<NodeA>
<element1>type1</element1>
<element2>Fruits</element2>
....
<elementn>Price1</elementn>
<Menu>
<NodeB>
<element1>type2</element1>
<element2>Fruits</element2>
....
<elementn>Price2</elementn>
<Menu>
<NodeC>
<element1>type3</element1>
<element2>Fruits</element2>
....
<elementn>Price3</elementn>
<Menu>
<NodeD>
<Element1>type4</element1>
<Element2>Vegetables</Element2>
....
<Elementn>Price4</elementn>
</NodeD>
</Menu>
</NodeC>
</Menu>
</NodeB>
</Menu>
</NodeA>
<NodeE>
<element1>type5</element1>
<element2>Fruits</element2>
....
<elementn>Price5</elementn>
<Menu>
<NodeF>
<element1>type6</element1>
<element2>Vegetables</element2>
....
<elementn>Price6</elementn>
</NodeF>
</Menu>
</NodeE>
</Menu>
</Host>
现在我预期的 XML 如下-
a) 如果<element2> == 所有节点中的水果,我需要如下 XML 模式。我可以在 host 下包含或排除以下 n 个元素 -
`<element1>type0</element>
<element2>Fruits</element2>
....
<elementn>Price0</elementn>`
.预期结果-
<Host>
<NodeA>
<element1>type1</element1>
<element2>Fruits</element2>
....
<elementn>Price1</elementn>
</NodeA>
<NodeB>
<element1>type2</element1>
<element2>Fruits</element2>
....
<elementn>Price2</elementn>
</NodeB>
<NodeC>
<element1>type3</element1>
<element2>Fruits</element2>
....
<elementn>Price3</elementn>
</NodeC>
<NodeE>
<element1>type5</element1>
<element2>Fruits</element2>
....
<elementn>Price5</elementn>
</NodeE>
</Host>
b) 如果<element2> == 所有节点中的蔬菜,我需要如下 XML 模式
注意:<element2> == 蔬菜始终位于架构中的最后一个节点
<Host>
<NodeD>
<element1>type4</element1>
<element2>Vegetables</element2>
....
<elementn>Price4</elementn>
</NodeD>
<NodeF>
<element1>type6</element1>
<element2>Vegetables</element2>
....
<elementn>Price6</elementn>
</NodeF>
</Host>
对于通过 XSLT 获取上述 XML 格式的任何帮助都会有很大帮助。
【问题讨论】:
-
您的输入和输出都不是有效的 XML,因此无法使用 XML 工具进行处理。此外,您的条件语句 " if
<element2> == fruits在所有节点中,预期的 XML 将如下所示" 留下许多可能性,例如一些值是fruits和一些值是vegetables。问题不清楚。 -
仍然无效的 XML。例如
<element1>没有结束标签。 -
你的(a)点是指
fruits in all the nodes的情况。您的观点 (b) 是指vegetables in all the nodes的情况。但是您的 XML 既有水果也有蔬菜,因此 (a) 和 (b) 点不适用。如果 XML 既有水果又有蔬菜,应该怎么办?您想要生成多个 XML 文档吗?还是应该在蔬菜之前与水果出现在相同的输出中?谢谢。 -
为什么标签xslt-2.0 和 [libxslt] 用于同一个问题? Libxslt 仅支持 XSLT 1.0。
-
嗨 @TimC 我需要 2 个 XML 输出文档来满足给定的 2 个条件,使用 2 个 XSLT。
标签: xslt xslt-2.0 xslt-grouping libxslt