[经验总结]XSLT中判断结点类型
2009-12-19 13:17
232 查看
<?xml version="1.0"?>
<!--以下代码摘自XSLTSL工程-->
<!--在XSLT中判断XML文档的结点类型 -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
xmlns:node="http://xsltsl.org/node"
extension-element-prefixes="doc node">
<xsl:template name="node:type">
<xsl:param name="node" select="."/>
<xsl:choose>
<xsl:when test="not($node)"/>
<!------------------------------------------------------------------->
<!--运用了self轴-->
<xsl:when test="$node[1]/self::*"> <!--元素结点-->
<xsl:text>element</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::text()"> <!--文本结点-->
<xsl:text>text</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::comment()"> <!--注释结点-->
<xsl:text>comment</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::processing-instruction()"> <!--处理指令结点-->
<xsl:text>processing instruction</xsl:text>
</xsl:when>
<xsl:when test="not($node[1]/parent::*)"> <!--根结点-->
<xsl:text>root</xsl:text>
</xsl:when>
<!--下面两种类型的判断巧妙运用了集合的概念-->
<xsl:when test="count($node[1] | $node[1]/../namespace::*) = count($node[1]/../namespace::*)">
<xsl:text>namespace</xsl:text>
</xsl:when>
<xsl:when test="count($node[1] | $node[1]/../@*) = count($node[1]/../@*)">
<xsl:text>attribute</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!--以下代码摘自XSLTSL工程-->
<!--在XSLT中判断XML文档的结点类型 -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
xmlns:node="http://xsltsl.org/node"
extension-element-prefixes="doc node">
<xsl:template name="node:type">
<xsl:param name="node" select="."/>
<xsl:choose>
<xsl:when test="not($node)"/>
<!------------------------------------------------------------------->
<!--运用了self轴-->
<xsl:when test="$node[1]/self::*"> <!--元素结点-->
<xsl:text>element</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::text()"> <!--文本结点-->
<xsl:text>text</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::comment()"> <!--注释结点-->
<xsl:text>comment</xsl:text>
</xsl:when>
<xsl:when test="$node[1]/self::processing-instruction()"> <!--处理指令结点-->
<xsl:text>processing instruction</xsl:text>
</xsl:when>
<xsl:when test="not($node[1]/parent::*)"> <!--根结点-->
<xsl:text>root</xsl:text>
</xsl:when>
<!--下面两种类型的判断巧妙运用了集合的概念-->
<xsl:when test="count($node[1] | $node[1]/../namespace::*) = count($node[1]/../namespace::*)">
<xsl:text>namespace</xsl:text>
</xsl:when>
<xsl:when test="count($node[1] | $node[1]/../@*) = count($node[1]/../@*)">
<xsl:text>attribute</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
相关文章推荐
- [经验总结]XSLT模板中创建普通文本结点及CDATA结点
- 深入C#判断操作系统类型的总结详解(转载)
- JavaScript判断数据类型总结
- js类型判断总结
- 判断js中数据类型方法总结
- js中判断变量类型函数typeof的用法总结
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、...
- JavaScript中判断对象类型的几种方法总结
- JAVA中判断某详细信息列表中是否有空项(经验总结)
- 网络判断和网络类型判断的小总结
- 可以用于switch语句的判断的数据类型总结
- JavaScript和jQuery的类型判断总结
- JavaScript学习总结(2)——JavaScript数据类型判断
- JavaScript知识点总结(六)之JavaScript判断变量数据类型
- 总结(类型判断,释放池,类别,kvo)
- 可以用于switch语句的判断的数据类型总结
- JavaScript中判断对象类型的几种方法总结
- JS判断浏览器类型的方法总结(IE firefox chrome opera safari)