如何使用XSL检查XML文件中是否存在属性

前端之家收集整理的这篇文章主要介绍了如何使用XSL检查XML文件中是否存在属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在运行时,我可以有两种格式的XML文件

>

<root>
    <diagram> 
        <graph color= "#ff00ff">    
            <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
            <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
        </graph>  
    </diagram> 
</root>

>

<root>
    <diagram> 
        <graph>    
            <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
            <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
        </graph>  
    </diagram> 
</root>

取决于颜色属性的存在
我必须处理xaxis和yaxis的值。

我需要使用XSL。
任何人都可以帮助我暗示我一个片段,我可以检查这些条款。

我试过使用

<xsl: when test="graph[1]/@color">
     //some processing here using graph[1]/@color values
</xsl:when>

我有错误

这是使用XSLT模式匹配和“推”“样式的全部功能进行条件处理的一种非常简单的方式,这甚至避免使用条件指令,例如< xsl:if>或< xsl:choose&gt ;:
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/root/diagram[graph[1]/@color]">
  Graph[1] has color
 </xsl:template>

 <xsl:template match="/root/diagram[not(graph[1]/@color)]">
  Graph[1] has not color
 </xsl:template>
</xsl:stylesheet>

当此转换应用于以下XML文档时:

<root>
    <diagram>
        <graph color= "#ff00ff">
            <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
            <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
        </graph>
        <graph>
            <xaxis>101 102 103 1012 10312 103123 101231 1023 </xaxis>
            <yaxis>101 102 103 1012 10312 103123 101231 1023 </yaxis>
        </graph>
    </diagram>
</root>

想要的,正确的结果是产生的:

Graph[1] has color

当对此XML文档应用相同的转换时:

<root>
    <diagram>
        <graph>
            <xaxis>101 102 103 1012 10312 103123 101231 1023 </xaxis>
            <yaxis>101 102 103 1012 10312 103123 101231 1023 </yaxis>
        </graph>
        <graph color= "#ff00ff">
            <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
            <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
        </graph>
    </diagram>
</root>

再次产生想要和正确的结果:

Graph[1] has not color

可以自定义解决方案,并在第一个模板中放置必要的代码,如有必要,可以在第二个模板中。

猜你在找的XML相关文章