Я пытаюсь найти решение проблемы с извлечением 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 в' Orders'. –
Это правда, но позже я понял, что было бы лучше для моей проблемы, если я буду использовать позицию элемента Order вместо OrderRef. Я разместил здесь решение с использованием фиксированных позиций, но в реальной жизни я передаю эти позиции через t.System.String.Format в коде. –