gpt4 book ai didi

xml - 以相反的顺序选择元素

转载 作者:行者123 更新时间:2023-12-03 16:12:39 25 4
gpt4 key购买 nike

我有下面显示的 XML 如果有人能告诉我如何首先选择 Parcel 元素,然后是 DeliveryAddress 元素,然后是 Consignment 元素,这些元素在 XML 文档中重复,如图所示,我将不胜感激。

  <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="mr23030b1.xsl"?>
<MR23030B>
<Header RECORD_TYPE="HD" METER_NO="10800" FILE_DATE="23/06/2011">
<SenderAddress RECORD_TYPE="AS" COUNTRY_CODE="GB" BRANCH_PREFIX="" BRANCH_CODE=""/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375530" COLL_PT="0001"/>
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_CODE="7255"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004322"/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375531" CONT_NO="9360964" />
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_CODE="7256"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004323"/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375532" CONT_NO="9360964" />
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_CODE="7257"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004324"/>
<TrailerRecord RECORD_TYPE="TR" NO_RECORDS="00000425"/>
</MR23030B>

我正在使用的 XSL 样式表:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="MR23030B">
xsl:apply-templates/>
</xsl:template>
<xsl:output method='text'/>

<xsl:variable name='newline'>
<xsl:text>&#10;</xsl:text>
</xsl:variable>

<xsl:template match="MR23030B">
<xsl:apply-templates select="/*/Parcel,/*/DeliveryAddress,/*/Consignment"/>
</xsl:template>

<xsl:template match="Parcel">
<xsl:value-of select="@PARCEL_NO"/>
<xsl:value-of select="$newline"/>
</xsl:template>

<xsl:template match="DeliveryAddress">
<xsl:value-of select="@BRANCH_CODE"/>
<xsl:value-of select="$newline"/>
</xsl:template>

<xsl:template match="Consignment">
<xsl:value-of select="@ACNT_NO"/>
<xsl:value-of select="$newline"/>
<xsl:value-of select="$newline"/>
</xsl:template>

我尝试了上面的 xsl 样式表,但我仍然以错误的顺序获取数据,即它首先读取 Consignment 元素,然后是 DeliveryAddress,最后是 Parcel。即 044375530 7255 JD0002210800004322 044375531 7256 JD0002210800004323 044375532 7257 JD000221082004

如您所知,我首先需要 Parcel 元素,然后是 Delivery address 和 Consignment 元素。

如果有人能告诉我样式表有什么问题,我将不胜感激。

最佳答案

在 XPath 2.0 中 :

for $cnt in count($yourExpression),
$i in 0 to $cnt -1
return
$yourExpression[$cnt - $i]

使用 XSLT 1.0 (XPath 1.0)
  <xsl:for-each select="$yourExpression">
<xsl:sort select="position()"
data-type="number" order="descending"/>

<!--Process an individual node here -->
</xsl:for-each>

关于xml - 以相反的顺序选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com