我正在努力寻找XML消息提取问题的解决方案。 我所拥有的是下面的XML消息的相似:XSLT选择XML消息的一部分
<Orders xmlns="http://AU.InputOrders">
<Order>
<OrderRef>D04004451</OrderRef>
<OrderQty>5</OrderQty>
</Order>
<Order>
<OrderRef>D04004451</OrderRef>
<OrderQty>1</OrderQty>
</Order>
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>1</OrderQty>
</Order>
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>4</OrderQty>
</Order>
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>2</OrderQty>
</Order>
</Orders>
我需要一个XSLT只得到该位:
<Orders xmlns="http://AU.InputOrders">
<Order>
<OrderRef>D04004451</OrderRef>
<OrderQty>5</OrderQty>
</Order>
<Order>
<OrderRef>D04004451</OrderRef>
<OrderQty>1</OrderQty>
</Order>
</Orders>
和
<Orders xmlns="http://AU.InputOrders">
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>1</OrderQty>
</Order>
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>4</OrderQty>
</Order>
<Order>
<OrderRef>D04004452</OrderRef>
<OrderQty>2</OrderQty>
</Order>
</Orders>
换句话说,我需要根据OrderRef元素值检索订单部件。
谢谢。
试过下面的解决方案和两个作品。 找到了另一种解决方案。它不使用OrderRef,而是使用Order元素的位置。仍然这个正在做我所需要的。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://AU.InputOrders">
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:element name="Orders" namespace="http://AU.InputOrders">
<xsl:copy-of select="ns0:Orders/ns0:Order[position() >= 1 and position() <=2]"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
谢谢。
您的解决方案根本不使用'OrderRef';那不是你的要求之一吗?您的解决方案仅适用于您需要的'Order'元素碰巧是'订单'中的前2个元素。 –
这是真的,但后来我意识到如果我将使用Order元素位置而不是OrderRef,会对我的问题更好。我在这里发布了使用固定位置的解决方案,但在现实生活中,我通过代码中的System.String.Format来传递这些位置。 –