0

私はXSLTを初めて使用します。私の質問が些細なことである場合は、失礼します。

以下のxmlを変換する必要があります

<annotation text="Australia" f:abc.location.adm1="AU.00" f:aliases="AUSTRALIAN" f:abc.location.population="21515754" f:abc.location.id="2077456"/>

値ペアに名前を付けます。属性の一部を一致させる必要があります。つまり、「 f:abc ....」の形式の属性を変換する必要があります。

たとえば、出力は次のようになります。

<property><name>location.adm1</name><value>AU.00</value></property>
<property><name>population</name><value>21515754</value></property>
<property><name>location.id</name><value>2077456</value></property>

コードを試しました

<xsl:template match="t:annotation[@f:abc*]">

しかし、成功しませんでした。目的の出力xmlを取得するために.xlsを作成する方法を教えてください。

御時間ありがとうございます。

4

1 に答える 1

1

これを行うことにより、これらの属性をテストできます。

<xsl:template match="t:annotation[@f:*[starts-with(local-name(), 'abc.')]]">

そして、次のようなテンプレートを利用できます。

<xsl:template match="t:annotation[@f:*[starts-with(local-name(), 'abc.')]]">
   <xsl:copy>
    <xsl:apply-templates select="@f:*[starts-with(local-name(), 'abc.')]" />
   </xsl:copy>
</xsl:template>

<xsl:template match="@f:*[starts-with(local-name(), 'abc.')]">
   <property>
      <name>
         <xsl:value-of select="substring-after(local-name(), 'abc.')" />
      </name>
      <value>
         <xsl:value-of select="." />
      </value>
   </property>
</xsl:template>
于 2013-03-06T15:12:14.463 に答える