Это первый раз для меня, чтобы обрабатывать XML с вложенными элементами и искать советы. Мне нужно преобразовать входной XML для вывода только одного элемента в выходной XML.
Вот мой входной XML, чтобы выглядеть так. У меня есть два элемента для <ImageId>
и два элемента для <ReferenceNumber>
. Мне нужно только вывести один <ImageId>
и один <ReferenceNumber>
, которые являются первыми двумя элементами под тегом <InquireCase>
.
Если я сделаю <xsl:copy-of select
, он скопирует все поля ReferenceNumber
. У меня есть дубликаты результатов <ReferenceNumber>201801364201801364</ReferenceNumber>
. Если я это сделаю, в элементе <ImageId></ImageId>
нет значения. Я сделал <xsl:apply-templates select="ImageId></xsl:apply-templates>
, но вывод XML показывает пустым.
Любая помощь очень ценится.
<?xml version='1.0'?>
<InquiryRequest>
<InquiryCase>
<ImageId>123453453</ImageId>
<ReferenceNumber>UDHD654634</ReferenceNumber>
</InquiryCase>
<Document>
<Lastname>MOUSE</Lastname>
</Document>
<InquiryCase>
<ImageId>123453453</ImageId>
<ReferenceNumber>UDHD654634</ReferenceNumber>
</InquiryCase>
</InquiryRequest>
Вот мой XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:env ="urn:envision">
<xsl:output method="xml" indent="yes"/>
<msxsl:text disable-output-escaping="yes"></msxsl:text>
<xsl:template match="InquiryRequest">
<xsl:element name ="ImageId">
<xsl:value-of select="ImageId"/>
</xsl:element>
<xsl:element name="InquiryCase">
<xsl:element name ="ReferenceNumber">
<xsl:copy-of select="//InquiryCase/ReferenceNumber/text()"/>
</xsl:element>
</xsl:element> <!-- added by edit -->
</xsl:template>
<xsl:template match="ImageId">
<xsl:element name ="ImageId">
<xsl:apply-templates select="ImageId"></xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>