繁体   English   中英

XSLT转换

[英]XSLT Conversion

我需要执行XML XSLT转换。 我是新手,已经阅读了很多教程,但遇到了一个对我来说有点挑战并且希望有人能指出我正确方向的教程。

我有两个元素,例如:

<linum class="topic/linum secondAtt/secondVal">Blah</linum>
<linum class="topic/linum">Blah</linum>

如果linum类属性具有第二个值,则必须使用该属性的第二个值向该元素添加另一个属性。 如果它只有一个,那么我保持原样。

所以上面两个输出的输出将是:

<linum class="topic/linum secondAtt/secondVal" newAttribute="secondVal">Blah</linum>
<linum class="topic/linum">Blah</linum>

我希望我已经很好地解释了这一点,如果不希望我的输出很清楚,因为只有通过添加第二个值的新属性才能转换第一个元素。

我感谢任何帮助!

以下内容适用于您的示例,其中class属性包含不超过两个以空格分隔的值:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="linum[contains(@class, ' ')]">
    <linum class="{@class}" newAttribute="{substring-after(substring-after(@class, ' '), '/')}">
        <xsl:apply-templates/>
    </linum>
</xsl:template>

</xsl:stylesheet>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM