在xslt节点中划分并选择值

时间:2013-02-28 10:42:12

标签: xml xslt

我有带节点的

的xml文件
<air:AirAvailInfo ProviderCode="1G">
  <air:BookingCodeInfo BookingCounts="C4|Z4|I4|D4|Y4|W4|Q4|E4|G4|T4|N4|B4|X4|U4|O4|V4|H4|L4|K4"/>
</air:AirAvailInfo>

这是xslt 1.0中的代码。 如何只更改节点中的一个扇区?我怎么能在结果中这样做?

<info>
  <code>H</code>
  <status>4</status>
</info>

谢谢!

1 个答案:

答案 0 :(得分:0)

我的回答如下:

  • BookingCounts中列表的所有元素都是由LETTER和NUMBER的串联组成的。数字的长度始终为1.

  • 列表中的所有元素都是唯一的,其中唯一关系仅由字母的唯一性定义。所以我们在同一个列表中找不到元素H2 H5。

  • OP只需要检索列表中的H元素。

遵循这些假设的解决方案可能是:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:air="http://airnamespace.com" version="1.0">
    <xsl:output method="xml" indent="yes"/>

    <!-- Match the attribute BookingCounts inside air:BookingCodeInfo -->
    <xsl:template match="air:BookingCodeInfo">
        <info>
            <code>H</code>
            <status><xsl:value-of select="substring(substring-after(@BookingCounts, 'H'), 1, 1)" /></status>
        </info>
    </xsl:template>

</xsl:stylesheet>

如果其中一些假设不正确,请告诉我,我将更改代码。