如何在 XSLT 1.0 中执行与 XSLT 2.0 匹配的等效操作
How to do the equivalent of XSLT2.0 Matches in XSLT1.0
在几篇文章的帮助下,我一直在整理 XSLT,并最终让它发挥作用。我现在发现该处理器仅兼容 XSLT1.0,这意味着我的 XSLT 将无法工作,因为它在模板的 select 中包含匹配函数。
我尝试过几次尝试重新创建它,但真的没有太多运气用 1.0 语法替换此部分。我要么以错误的循环结束,要么以错误的方式结束。
<xsl:for-each select="../../../*[matches(name(),'^vco_.*')]/text()">
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
我想我可能必须做类似下面的事情(这不起作用)或使用一个函数但不能得到任何看起来正确的东西。
<xsl:for-each select="/exchange/vco/vco.srs/vco_crsc.vco.srs">
<xsl:value-of select=" ancestor-or-self::node()"/>
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
当前代码和输出如下
XML 在
<?xml version="1.0" encoding="UTF-8" ?>
<exchange>
<vco>
<vco.srs>
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs>
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs>
<vco_rouc.vco.srs>USBIFI</vco_rouc.vco.srs>
<cbo>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
</cbo>
</vco.srs>
<vco.srs>
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs>
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs>
<vco_rouc.vco.srs>USBIFA</vco_rouc.vco.srs>
<cbo>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
</cbo>
</vco.srs>
</vco>
</exchange>
我的 XSL 2.0 模板可以满足我的要求:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/exchange">
<ImportTask xlns="http://inplace.quantumit.com.au/import/version_1_0/" xmlns:i="http://www.w3.org/2001/XMLSchema">
<CourseVersions>
<xsl:for-each select="/exchange/vco/vco.srs">
<CourseVersion>
<xsl:apply-templates select="//cbo_occl.cbo.srs | //crs/crs.srs"/>
</CourseVersion>
</xsl:for-each>
</CourseVersions>
</ImportTask>
</xsl:template>
<xsl:template match="cbo_occl.cbo.srs">
<CourseCode>
<!-- select all text-Nodes of vco_* elements -->
<xsl:for-each select="../../../*[matches(name(),'^vco_.*')]/text()">
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
<xsl:value-of select="."/>
</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
</xsl:template>
<xsl:template match="crs/crs.srs">
<xsl:for-each select="exchange/crs/crs.srs">
</xsl:for-each>
<StartDate><xsl:value-of select="crs_begd.crs.srs"/></StartDate>
<Description><xsl:value-of select="crs_titl.crs.srs"/></Description>
<FacultyCode><xsl:value-of select="crs_dptc.crs.srs"/></FacultyCode>
</xsl:template>
</xsl:stylesheet>
我想要的输出
<?xml version="1.0" encoding="UTF-8"?>
<ImportTask xmlns:i="http://www.w3.org/2001/XMLSchema"
xlns="http://inplace.quantumit.com.au/import/version_1_0/">
<CourseVersions>
<CourseVersion>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
</CourseVersion>
<CourseVersion>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
</CourseVersion>
</CourseVersions>
</ImportTask>
非常感谢
约拿
如果您需要做的只是检查固定前缀,那么您可以使用 starts-with
而不是 matches
:
<xsl:for-each select="../../../*[starts-with(name(),'vco_')]/text()">
在几篇文章的帮助下,我一直在整理 XSLT,并最终让它发挥作用。我现在发现该处理器仅兼容 XSLT1.0,这意味着我的 XSLT 将无法工作,因为它在模板的 select 中包含匹配函数。
我尝试过几次尝试重新创建它,但真的没有太多运气用 1.0 语法替换此部分。我要么以错误的循环结束,要么以错误的方式结束。
<xsl:for-each select="../../../*[matches(name(),'^vco_.*')]/text()">
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
我想我可能必须做类似下面的事情(这不起作用)或使用一个函数但不能得到任何看起来正确的东西。
<xsl:for-each select="/exchange/vco/vco.srs/vco_crsc.vco.srs">
<xsl:value-of select=" ancestor-or-self::node()"/>
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
当前代码和输出如下
XML 在
<?xml version="1.0" encoding="UTF-8" ?>
<exchange>
<vco>
<vco.srs>
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs>
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs>
<vco_rouc.vco.srs>USBIFI</vco_rouc.vco.srs>
<cbo>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
</cbo>
</vco.srs>
<vco.srs>
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs>
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs>
<vco_rouc.vco.srs>USBIFA</vco_rouc.vco.srs>
<cbo>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
<crs>
<crs.srs>
<crs_titl.crs.srs>BSc Banking & Int Finance</crs_titl.crs.srs>
<crs_dptc.crs.srs>B</crs_dptc.crs.srs>
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs>
</crs.srs>
</crs>
</cbo.srs>
</cbo>
</vco.srs>
</vco>
</exchange>
我的 XSL 2.0 模板可以满足我的要求:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/exchange">
<ImportTask xlns="http://inplace.quantumit.com.au/import/version_1_0/" xmlns:i="http://www.w3.org/2001/XMLSchema">
<CourseVersions>
<xsl:for-each select="/exchange/vco/vco.srs">
<CourseVersion>
<xsl:apply-templates select="//cbo_occl.cbo.srs | //crs/crs.srs"/>
</CourseVersion>
</xsl:for-each>
</CourseVersions>
</ImportTask>
</xsl:template>
<xsl:template match="cbo_occl.cbo.srs">
<CourseCode>
<!-- select all text-Nodes of vco_* elements -->
<xsl:for-each select="../../../*[matches(name(),'^vco_.*')]/text()">
<xsl:value-of select="concat(.,'-')"/>
</xsl:for-each>
<xsl:value-of select="."/>
</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
</xsl:template>
<xsl:template match="crs/crs.srs">
<xsl:for-each select="exchange/crs/crs.srs">
</xsl:for-each>
<StartDate><xsl:value-of select="crs_begd.crs.srs"/></StartDate>
<Description><xsl:value-of select="crs_titl.crs.srs"/></Description>
<FacultyCode><xsl:value-of select="crs_dptc.crs.srs"/></FacultyCode>
</xsl:template>
</xsl:stylesheet>
我想要的输出
<?xml version="1.0" encoding="UTF-8"?>
<ImportTask xmlns:i="http://www.w3.org/2001/XMLSchema"
xlns="http://inplace.quantumit.com.au/import/version_1_0/">
<CourseVersions>
<CourseVersion>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
</CourseVersion>
<CourseVersion>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode>
<Version>1</Version>
<EndDate>i:nil="true"</EndDate>
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode>
<StartDate>2003-08-01</StartDate>
<Description>BSc Banking & Int Finance</Description>
<FacultyCode>B</FacultyCode>
</CourseVersion>
</CourseVersions>
</ImportTask>
非常感谢
约拿
如果您需要做的只是检查固定前缀,那么您可以使用 starts-with
而不是 matches
:
<xsl:for-each select="../../../*[starts-with(name(),'vco_')]/text()">