我的XSLT工作得很好,但我遇到了一些问题。
首先,它不产生ROOT元素。
其次,XML数据有两个元素<ACPGDEGREE1>
和<CCD11>
。当一个包含数据时,另一个是空的,反之亦然。如果<ACPGDEGREE1>
包含数据,我想插入数据并添加文本&#34; DEGREE&#34;在它之后。如果<CCD11>
包含数据,我想忽略数据但插入文本&#34;证书&#34;。
非常感谢任何帮助。
这是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>
答案 0 :(得分: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".
似乎很容易映射到两个模板规则中:
<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编码主要是翻译这些规则直接进入模板规则。