首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用axis XSLT1.0

使用axis XSLT1.0
EN

Stack Overflow用户
提问于 2014-10-14 15:37:24
回答 1查看 43关注 0票数 0

这是我的XML:

代码语言:javascript
复制
<NTC_SECTION_LIGHTLISPRODUCT>
    <SECTION_CONTENT_LIST>
        <SECTION_CONTENT_LIST_ITEM>
            <NTC_LIGHTLISTPRODUCT>
                <REGION>17-Mar Tirreno - Italia (Sardegna)</REGION>
                <VICINITY>PORTO TORRES</VICINITY>
            </NTC_LIGHTLISTPRODUCT>
        </SECTION_CONTENT_LIST_ITEM>
        <SECTION_CONTENT_LIST_ITEM>
            <NTC_LIGHTLISTPRODUCT>
                <REGION>12-Mediterraneo Occidentale - Italia (Sardegna)</REGION>
                <VICINITY>PORTO MADDALENA</VICINITY>
            </NTC_LIGHTLISTPRODUCT>
        </SECTION_CONTENT_LIST_ITEM>
        <SECTION_CONTENT_LIST_ITEM>
            <NTC_LIGHTLISTPRODUCT>
                <REGION>17-Mar Tirreno - Italia (Sardegna)</REGION>
                <VICINITY>PORTO DI SIRACUSA</VICINITY> 
            </NTC_LIGHTLISTPRODUCT>
        </SECTION_CONTENT_LIST_ITEM>
    </SECTION_CONTENT_LIST>
</NTC_SECTION_LIGHTLISPRODUCT>

区域e附近的数据和数据被放入一个表中(没有特定的顺序)。

Thi是我的XSLT1.0:

代码语言:javascript
复制
<xsl:for-each select="NTC_SECTION_LIGHTLISPRODUCT">
    <xsl:for-each select="SECTION_CONTENT_LIST">
        <table>
            <tbody>
                <xsl:for-each select="SECTION_CONTENT_LIST_ITEM">
                    <xsl:for-each select="NTC_LIGHTLISTPRODUCT/REGION">
                    ....
                    </xsl:for-each>
                    <xsl:for-each select="NTC_LIGHTLISTPRODUCT/VICINITY">
                    ....
                    </xsl:for-each>
                </xsl:for-each>
            </tbody>
        </table>
    </xsl:for-each>
</xsl:for-each>

输出中的XSLt创建了一个具有区域和邻域值的唯一表。

我的请求:

I将创建一个新表(由BR/分隔),每次更改REGION -substring-后(REGION,‘-’)的值时,都会创建一个新表(由BR/分隔),以便拥有:

PORTO TORRES

\x{e76f}PORTO DI SIRACUSA

\x{e76f}PORTO MADDALENA

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-14 17:03:01

读一读门窗群

在您的例子中,您似乎是按NTC_LIGHTLISTPRODUCT分组(或者您简短地提到了子字符串-)

代码语言:javascript
复制
 <xsl:key name="region" match="NTC_LIGHTLISTPRODUCT" use="substring-after(REGION, '-')" />

然后,首先获取每个可能出现的NTC_LIGHTLISTPRODUCT的第一个REGION (即不同的区域)。

代码语言:javascript
复制
<xsl:for-each select=".//NTC_LIGHTLISTPRODUCT[generate-id() = generate-id(key('region', substring-after(REGION, '-'))[1])]">

然后,只需使用以下键,就可以获得这个“组”中的项(具有相同区域的项):

代码语言:javascript
复制
 <xsl:apply-templates select="key('region', substring-after(REGION, '-'))" />

试试这个XSLT

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes" />

    <xsl:key name="region" match="NTC_LIGHTLISTPRODUCT" use="substring-after(REGION, '-')" />

    <xsl:template match="NTC_SECTION_LIGHTLISPRODUCT">
        <xsl:for-each select=".//NTC_LIGHTLISTPRODUCT[generate-id() = generate-id(key('region', substring-after(REGION, '-'))[1])]">
            <h1><xsl:value-of select="substring-after(REGION, '-')" /></h1>
            <table>
                <xsl:apply-templates select="key('region', substring-after(REGION, '-'))" />
            </table>
        </xsl:for-each>
    </xsl:template>

    <xsl:template match="NTC_LIGHTLISTPRODUCT">
        <tr>
            <td><xsl:value-of select="VICINITY" /></td>
        </tr>
    </xsl:template>
</xsl:stylesheet>

这将产生以下结果:

代码语言:javascript
复制
<h1>Mar Tirreno - Italia (Sardegna)</h1>
<table>
   <tr>
      <td>PORTO TORRES</td>
   </tr>
   <tr>
      <td>PORTO DI SIRACUSA</td>
   </tr>
</table>
<h1>Mediterraneo Occidentale - Italia (Sardegna)</h1>
<table>
   <tr>
      <td>PORTO MADDALENA</td>
   </tr>
</table>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26364752

复制
相关文章

相似问题

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