0

ノード付きの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>

xslt1.0のコードです。ノード内の1つのセクターのみをどのように変更しますか?結果としてこれをどのように行うことができますか?

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

ありがとう!

4

1 に答える 1

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>

これらの仮定の一部が正しくない場合は、教えてください。コードを変更します。

于 2013-02-28T11:48:17.537 に答える