3

私は次のXMLファイルを持っています:

<?xml version="1.0" encoding="utf-8"?>
<Batch BatchID="896" BatchName="20120629.130504">
    <Document DocumentType="XML Question">
        <Fields>
            <Field FieldName="Doc_ID">1</Field>
            <Field FieldName="Vendor_Code">126400</Field>
            <Field FieldName="Property_Code">10519</Field>
            <Field FieldName="Invoice_Num">20509</Field>
        </Fields><Files />
    </Document>
</Batch>

XSLTファイルを使用して次のように変換したいと思います。

<?xml version="1.0" standalone="yes"?>
<ABCRelease>
  <ABC>
    <Doc_Id>1345</Doc_Id>
    <Vendor_Code>134500</Vendor_Code>
    <Property_Code>105559</Property_Code>
    <Invoice_Num>2034539</Invoice_Num>
  </ABC>
</ABCRelease>

初めてXMLで遊んだのですが、今日は遠くまで行かずに何時間も費やし、このトピックについて多くの検索を行いました。誰かが私を助けて、これを可能にするいくつかのサンプルコードを提供することができますか?

私の問題は、FieldName値を抽出し、それを<>に挿入することです。

<Field FieldName="Doc_ID">1</Field>

<Doc_Id>1345</Doc_Id>

本当にあなたの助けに感謝するでしょう。

スティーブン

4

1 に答える 1

1

この変換

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="Fields">
   <ABCRelease>
    <ABC>
      <xsl:apply-templates/>
    </ABC>
   </ABCRelease>
 </xsl:template>

 <xsl:template match="Field">
  <xsl:element name="{@FieldName}">
    <xsl:value-of select="."/>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>

提供されたXMLドキュメントに適用した場合:

<Batch BatchID="896" BatchName="20120629.130504">
    <Document DocumentType="XML Question">
        <Fields>
            <Field FieldName="Doc_ID">1</Field>
            <Field FieldName="Vendor_Code">126400</Field>
            <Field FieldName="Property_Code">10519</Field>
            <Field FieldName="Invoice_Num">20509</Field>
        </Fields>
        <Files />
    </Document>
</Batch>

必要な正しい結果を生成します。

<ABCRelease>
   <ABC>
      <Doc_ID>1</Doc_ID>
      <Vendor_Code>126400</Vendor_Code>
      <Property_Code>10519</Property_Code>
      <Invoice_Num>20509</Invoice_Num>
   </ABC>
</ABCRelease>

説明

<xsl:element>およびAVT(属性値テンプレート)の適切な使用。

于 2012-06-29T05:11:03.570 に答える