1

非常に一般的な XML タグ名を使用しているが、次のような豊富な属性構造を使用している XML ファイルを取得しました。 <Field Name="CRSDESC1" FieldName="{@CRS_DESC}"><FormattedValue>Survey of Human Anatomy and Physiology</FormattedValue></Field>

「Name」属性を使用して、上記のように既存の要素名を次のように変更します。 <CRSDESC1>Survey of Human Anatomy and Physiology</CRSDESC1>

<FormattedValue>新しい要素を作成すると、要素も複製も必要なくなります<Value>

XML のサンプル セクションを次に示します。

<CrystalReport> <ReportHeader><Details Level="1"> <Section SectionNumber="0"> <Field Name="CRSDESC1" FieldName="{@CRS_DESC}"><FormattedValue>Heating and Air Contracting</FormattedValue><Value>Heating and Air Contracting</Value></Field> <Field Name="CRSTITLE1" FieldName="{@CRS_TITLE}"><FormattedValue>Heating and Air Conditioning Contracting</FormattedValue><Value>Heating and Air Conditioning Contracting</Value></Field> <Field Name="CRSDEPTS1" FieldName="{Command.CRS_DEPTS}"><FormattedValue>AIRC</FormattedValue><Value>AIRC</Value></Field> <Field Name="DEPTSDESC1" FieldName="{Command.DEPTS_DESC}"><FormattedValue>Heating, A/C &amp; Refrigeration</FormattedValue><Value>Heating, A/C &amp; Refrigeration</Value></Field> <Field Name="CRSNO1" FieldName="{Command.CRS_NO}"><FormattedValue>2260</FormattedValue><Value>2260</Value></Field> <Field Name="CRSSTANDARDARTICULATIONNO1" FieldName="{Command.CRS_STANDARD_ARTICULATION_NO}"><FormattedValue></FormattedValue><Value></Value></Field> <Field Name="CRSMINCRED1" FieldName="{Command.CRS_MIN_CRED}"><FormattedValue>3.00</FormattedValue><Value>3.00</Value></Field> </Section> </Details> <Details Level="1"> <Section SectionNumber="0"> <Field Name="CRSDESC1" FieldName="{@CRS_DESC}"><FormattedValue>Survey of Human Anatomy and Physiology</FormattedValue><Value>Survey of Human Anatomy and Physiology</Value></Field> <Field Name="CRSTITLE1" FieldName="{@CRS_TITLE}"><FormattedValue>Survey of Human Anatomy and Physiology</FormattedValue><Value>Survey of Human Anatomy and Physiology</Value></Field> <Field Name="CRSDEPTS1" FieldName="{Command.CRS_DEPTS}"><FormattedValue>ANAT</FormattedValue><Value>ANAT</Value></Field> <Field Name="DEPTSDESC1" FieldName="{Command.DEPTS_DESC}"><FormattedValue>Anatomy &amp; Physiology</FormattedValue><Value>Anatomy &amp; Physiology</Value></Field> <Field Name="CRSNO1" FieldName="{Command.CRS_NO}"><FormattedValue>1500</FormattedValue><Value>1500</Value></Field> <Field Name="CRSSTANDARDARTICULATIONNO1" FieldName="{Command.CRS_STANDARD_ARTICULATION_NO}"><FormattedValue>L1 904L</FormattedValue><Value>L1 904L</Value></Field> <Field Name="CRSMINCRED1" FieldName="{Command.CRS_MIN_CRED}"><FormattedValue>4.00</FormattedValue><Value>4.00</Value></Field> </Section> </Details> <ReportHeader><CrystalReport>

4

1 に答える 1

2

これはうまくいくでしょう...

XML 入力(整形式に修正)

<CrystalReport>
    <ReportHeader>
        <Details Level="1">
            <Section SectionNumber="0">
                <Field Name="CRSDESC1" FieldName="{@CRS_DESC}">
                    <FormattedValue>Heating and Air Contracting</FormattedValue>
                    <Value>Heating and Air Contracting</Value>
                </Field>
                <Field Name="CRSTITLE1" FieldName="{@CRS_TITLE}">
                    <FormattedValue>Heating and Air Conditioning Contracting</FormattedValue>
                    <Value>Heating and Air Conditioning Contracting</Value>
                </Field>
                <Field Name="CRSDEPTS1" FieldName="{Command.CRS_DEPTS}">
                    <FormattedValue>AIRC</FormattedValue>
                    <Value>AIRC</Value>
                </Field>
                <Field Name="DEPTSDESC1" FieldName="{Command.DEPTS_DESC}">
                    <FormattedValue>Heating, A/C &amp; Refrigeration</FormattedValue>
                    <Value>Heating, A/C &amp; Refrigeration</Value>
                </Field>
                <Field Name="CRSNO1" FieldName="{Command.CRS_NO}">
                    <FormattedValue>2260</FormattedValue>
                    <Value>2260</Value>
                </Field>
                <Field Name="CRSSTANDARDARTICULATIONNO1" FieldName="{Command.CRS_STANDARD_ARTICULATION_NO}">
                    <FormattedValue/>
                    <Value/>
                </Field>
                <Field Name="CRSMINCRED1" FieldName="{Command.CRS_MIN_CRED}">
                    <FormattedValue>3.00</FormattedValue>
                    <Value>3.00</Value>
                </Field>
            </Section>
        </Details>
        <Details Level="1">
            <Section SectionNumber="0">
                <Field Name="CRSDESC1" FieldName="{@CRS_DESC}">
                    <FormattedValue>Survey of Human Anatomy and Physiology</FormattedValue>
                    <Value>Survey of Human Anatomy and Physiology</Value>
                </Field>
                <Field Name="CRSTITLE1" FieldName="{@CRS_TITLE}">
                    <FormattedValue>Survey of Human Anatomy and Physiology</FormattedValue>
                    <Value>Survey of Human Anatomy and Physiology</Value>
                </Field>
                <Field Name="CRSDEPTS1" FieldName="{Command.CRS_DEPTS}">
                    <FormattedValue>ANAT</FormattedValue>
                    <Value>ANAT</Value>
                </Field>
                <Field Name="DEPTSDESC1" FieldName="{Command.DEPTS_DESC}">
                    <FormattedValue>Anatomy &amp; Physiology</FormattedValue>
                    <Value>Anatomy &amp; Physiology</Value>
                </Field>
                <Field Name="CRSNO1" FieldName="{Command.CRS_NO}">
                    <FormattedValue>1500</FormattedValue>
                    <Value>1500</Value>
                </Field>
                <Field Name="CRSSTANDARDARTICULATIONNO1" FieldName="{Command.CRS_STANDARD_ARTICULATION_NO}">
                    <FormattedValue>L1 904L</FormattedValue>
                    <Value>L1 904L</Value>
                </Field>
                <Field Name="CRSMINCRED1" FieldName="{Command.CRS_MIN_CRED}">
                    <FormattedValue>4.00</FormattedValue>
                    <Value>4.00</Value>
                </Field>
            </Section>
        </Details>
    </ReportHeader>
</CrystalReport>

XSLT1.0

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

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Field[@Name]">
        <xsl:element name="{@Name}">
            <xsl:value-of select="FormattedValue"/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

XML 出力

<CrystalReport>
   <ReportHeader>
      <Details Level="1">
         <Section SectionNumber="0">
            <CRSDESC1>Heating and Air Contracting</CRSDESC1>
            <CRSTITLE1>Heating and Air Conditioning Contracting</CRSTITLE1>
            <CRSDEPTS1>AIRC</CRSDEPTS1>
            <DEPTSDESC1>Heating, A/C &amp; Refrigeration</DEPTSDESC1>
            <CRSNO1>2260</CRSNO1>
            <CRSSTANDARDARTICULATIONNO1/>
            <CRSMINCRED1>3.00</CRSMINCRED1>
         </Section>
      </Details>
      <Details Level="1">
         <Section SectionNumber="0">
            <CRSDESC1>Survey of Human Anatomy and Physiology</CRSDESC1>
            <CRSTITLE1>Survey of Human Anatomy and Physiology</CRSTITLE1>
            <CRSDEPTS1>ANAT</CRSDEPTS1>
            <DEPTSDESC1>Anatomy &amp; Physiology</DEPTSDESC1>
            <CRSNO1>1500</CRSNO1>
            <CRSSTANDARDARTICULATIONNO1>L1 904L</CRSSTANDARDARTICULATIONNO1>
            <CRSMINCRED1>4.00</CRSMINCRED1>
         </Section>
      </Details>
   </ReportHeader>
</CrystalReport>
于 2012-12-07T18:17:15.927 に答える