0

XSLT はかなりうまく機能していますが、いくつか問題があります。

まず、ROOT 要素を生成しません。

次に、XML データには と の 2 つの要素が<ACPGDEGREE1>あり<CCD11>ます。一方にデータが含まれている場合、もう一方は空であり、その逆も同様です。データが含まれている場合<ACPGDEGREE1>は、データを挿入し、その後に「DEGREE」というテキストを追加します。データが含まれている場合<CCD11>、データを無視してテキスト「CERTIFICATE」を挿入したい。

どんな助けでも大歓迎です。

XSLT は次のとおりです。

<?xml version="1.0"?>
<!-- DWXMLSource="STX049 Course Catalog Parsed_FINAL.xml" -->
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="no"/>

    <xsl:key name="degrees-by-title" match="Section" use="ICCB1"/>

    <xsl:template match="CrystalReport/Group">

        <crystalreports>
            <xsl:for-each select="Section[count(. | key('degrees-by-title', ICCB1)[1]) = 1]">
                <xsl:sort select="ACADPROGRAMSID1"/>
                <department>
                    <Degreetitle>
                        <xsl:value-of select="ACPGDEGREE1"/>
                    </Degreetitle>
                    <xsl:text> DEGREE</xsl:text>
                    <Certtitle>
                        <xsl:value-of select="CCD11"/>
                    </Certtitle>
                    <xsl:text> CERTIFICATE 
                    </xsl:text>
                    <DegreeDesc>
                        <xsl:value-of select="ACPGCOMMENTS1"/>
                    </DegreeDesc>
                    <xsl:text>ICCB Code</xsl:text>
                    <ICCBcode>
                        <xsl:value-of select="ICCB1"/>
                    </ICCBcode>
                    <xsl:text> | Field of Study     Code: </xsl:text>
                    <ProgramID>
                        <xsl:value-of select="ACADPROGRAMSID1"/>
                    </ProgramID>
                    <xsl:text>Program Requirements</xsl:text>
                    <xsl:for-each select="key('degrees-by-title', ICCB1)">
                        <xsl:sort select="DEPARTMENT12"/>
                        <xsl:sort select="CRSNO1"/>
                        <Details>
                            <class>
                                <deptname>
                                    <xsl:value-of select="DEPARTMENT12"/>
                                </deptname>
                                <xsl:text/>
                                <courseno>
                                    <xsl:value-of select="CRSNO1"/>
                                </courseno>
                                <classname>
                                    <xsl:value-of select="CRSTITLE11"/>
                                </classname>
                                <xsl:text/>
                                <classcredit>
                                    <xsl:value-of select="CRSMINCRED1"/>
                                </classcredit>
                            </class>
                            <xsl:text>
                            </xsl:text>
                        </Details>
                        <xsl:text>
                        </xsl:text>
                    </xsl:for-each>
                </department>
            </xsl:for-each>
        </crystalreports>

    </xsl:template>

</xsl:stylesheet>

サンプル XML は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<CrystalReport>
  <Group Level="3">
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>1150</CRSNO1>
      <CRSTITLE11>Managerial Accounting</CRSTITLE11>
      <CRSMINCRED1>4.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>2205</CRSNO1>
      <CRSTITLE11>Federal Taxation I</CRSTITLE11>
      <CRSMINCRED1>3.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>2241</CRSNO1>
      <CRSTITLE11>Intermediate Accounting I</CRSTITLE11>
      <CRSMINCRED1>4.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>2242</CRSNO1>
      <CRSTITLE11>Intermediate Accounting II</CRSTITLE11>
      <CRSMINCRED1>4.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>2251</CRSNO1>
      <CRSTITLE11>Cost Accounting</CRSTITLE11>
      <CRSMINCRED1>3.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>1100</CRSNO1>
      <CRSTITLE11>Introduction to Business</CRSTITLE11>
      <CRSMINCRED1>3.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>2201</CRSNO1>
      <CRSTITLE11>Macroeconomics and the Global Economy</CRSTITLE11>
      <CRSMINCRED1>3.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>1140</CRSNO1>
      <CRSTITLE11>Financial Accounting</CRSTITLE11>
      <CRSMINCRED1>4.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <Section SectionNumber="0">
      <ACPGDEGREE1>AAS</ACPGDEGREE1>
      <CCD11/>
      <ACPGCOMMENTS1>The Accounting program is designed to provide the theoretical and practical background necessary for supervisory and administrative careers in accounting and accounting-related areas. This degree requires a minimum of 64 credits in program requirements, program electives, and general education as listed below.</ACPGCOMMENTS1>
      <ICCB1>3203</ICCB1>
      <DEPARTMENT12>ACCOU</DEPARTMENT12>
      <ACADPROGRAMSID1>ACCOU.AAS</ACADPROGRAMSID1>
      <CRSNO1>1114</CRSNO1>
      <CRSTITLE11>Business Ethics</CRSTITLE11>
      <CRSMINCRED1>3.00</CRSMINCRED1>
      <ACRBPRINTEDSPEC1/>
      <ACPGHOMELANGNOTREQDRSN1>General Education - 12 to 16 (In addition to those listed above)  Total Credits Required - 64 to 70</ACPGHOMELANGNOTREQDRSN1>
    </Section>
    <GroupFooter>
      <Section SectionNumber="0"/>
    </GroupFooter>
  </Group>
</CrystalReport>
4

1 に答える 1

1

ルート要素がない理由は、ルート要素を生成するコードを記述していないためです。通常の方法は、たとえばソースドキュメントのルートと一致するテンプレートを用意することです。

<xsl:template match="/">
  <root>
    <xsl:apply-templates/>
  </root>
</xsl:template>

この要件のステートメント:

If <ACPGDEGREE1> contains data, I want to insert the data and add the text "DEGREE" after it. If <CCD11> contains data, I want to ignore the data but insert the text "CERTIFICATE".

2つのテンプレートルールに非常に簡単にマッピングできるようです。

<xsl:template match="ACPGDEGREE1[child::node()]">
  <xsl:value-of select="."/>
  <xsl:text> DEGREE</xsl:text>
</xsl:template>

<xsl:template match="CCD11[child::node()]">
  <xsl:text> CERTIFICATE</xsl:text>
</xsl:template>

一連のルールの観点から要件を表現する方法を理解しましたが(これを見ると、これを実行したいと思います)、XSLTコーディングの大部分がこれらのルールをテンプレートに直接変換することで構成されていることを理解していないようです。ルール。

于 2012-12-11T10:47:39.310 に答える