首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML的XSL转换-显示多余的附加文本

XML的XSL转换-显示多余的附加文本
EN

Stack Overflow用户
提问于 2015-04-13 10:18:04
回答 1查看 105关注 0票数 1

在之前的一篇文章中,我收集了一个XSL来转换一些XML。我现在有了XSL输出正确的数据,但我有两个问题。1)我正在显示一些我不希望在每个标记之前出现的附加文本,例如:

代码语言:javascript
复制
BUUBIF
BUBSBAT02
USBIFA

2)我的循环不完全正确。标记应该封装每一次内容的迭代。

代码语言:javascript
复制
<CourseCode/>
<Version/>
<EndDate/>
<PrimaryDisciplineCode/>
<StartDate/>
<Description/>
<FacultyCode/>

我的XML有一些课程数据,它们循环通过两个相关的记录,然后进入下一个课程,所以就实体而言,它应该通过VCO、CBK、CRS循环,然后重新开始。

我的XML:

代码语言:javascript
复制
<?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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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

代码语言:javascript
复制
                <?xml version="1.0" encoding="UTF-8"?>
<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>
<CourseVersions>
<CourseVersion>
<xsl:apply-templates select="*|@*"/>
</CourseVersion>
</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> 

这给了我输出:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
<ImportTask>
<CourseVersions>
<CourseVersion>

BUUBIF
BUBSBAT02
USBIFI

<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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Int Finance</Description>
 <FacultyCode>B</FacultyCode>

BUUBIF
BUBSBAT02
USBIFA

<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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Int Finance</Description>
 <FacultyCode>B</FacultyCode>

    </CourseVersion>
</CourseVersions>
</ImportTask>

非常感谢

约拿

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 10:43:13

使用<xsl:apply-templates select="*|@*"/>,您可以处理所有属性和子节点,这意味着<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs>由内置模板处理,最终输出所有文本节点。

因此,要么添加<xsl:template match="text()"/>以避免文本节点创建输出,要么将apply-templates更改为只处理为其编写模板的两个元素:<xsl:apply-templates select="//cbo_occl.cbo.srs | //crs/crs.srs"/>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29602949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档