首页 > 解决方案 > XSLT 应用模板,其中子元素以“A”开头

问题描述

我有一个xml结构,基本上如下:

<Export>
<TaskWords>
    <TaskWord>
        <ID>1</ID>
        <WordType>A01</WordType>
        <Body>blah</body>
    </TaskWord>
    <TaskWord>
        <ID>2</ID>
        <WordType>A02</WordType>
        <Body>blah</body>
    </TaskWord>
    <TaskWord>
        <ID>3</ID>
        <WordType>B01</WordType>
        <Body>blah</body>
    </TaskWord>
    <TaskWord>
        <ID>4</ID>
        <WordType>B02</WordType>
        <Body>blah</body>
    </TaskWord>
</TaskWords>
</Export>

我还有一些 XSLT 代码,它应用了一个模板,该模板构建了 TaskWords 的 XHTML 表,按 WordType 分组。

我想将模板应用于 TaskWords 的子集,例如 WordType 以“A”开头;这样我就可以将所有“A”字型放入报告的一个表格中,然后从其他地方添加更多内容,然后跟进一个包含所有“B”字型的表格。

我一直在尝试按照以下方式拨打电话,但无济于事:

<xsl:apply-templates select="TaskWords[TaskWord/WordType[starts-with(.,'A')]]"/> 
<xsl:apply-templates select="OtherContent"/>
<xsl:apply-templates select="TaskWords[TaskWord/WordType[starts-with(.,'B')]]"/> 

在尝试使用 apply-templates 命令的 select 语句过滤 TaskWords 集时,我是否走在正确的道路上?任何建议、指示或解决方案将不胜感激。

标签: xmlxsltxhtml

解决方案


查看 xsl:for-each-group。通过设置适当的属性,您可以获得不同的组,其中组的所有成员都具有您正在查看的条件。然后,您可以在整个组级别进行处理,或者根据您的输出要求对组中的每个成员进行处理。


推荐阅读