xml – 使用XSLT跳过节点
发布时间:2020-12-16 05:36:21  所属栏目:百科  来源:网络整理 
            导读:在处理xml文件时是否可以跳过节点?例如:说我有以下xml代码: mycase desc="" caseid id_1234 /caseid serid ref=""/ ...... ...... ...... /mycase 我想让它看起来像这样: mycase desc="" caseid="id_1234" ..... ...../mycase 目前我这样做: ?xml versi
                
                
                
            | 
                         
 在处理xml文件时是否可以跳过节点?例如:说我有以下xml代码: 
  
  
  
<mycase desc=""> <caseid> id_1234 </caseid> <serid ref=""/> ...... ...... ...... </mycase> 我想让它看起来像这样: <mycase desc="" caseid="id_1234"> ..... ..... </mycase> 目前我这样做: <?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs xdt err fn"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:fn="http://www.w3.org/2005/xpath-functions"
            xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
            xmlns:err="http://www.w3.org/2005/xqt-errors">
          <xsl:output method="xml" indent="yes"/>
          <xsl:template match="/">
            <xsl:apply-templates/> 
          </xsl:template>
         <xsl:template match="mycase">          
            <xsl:element name="mycase">
               <xsl:attribute name="desc"/>
               <xsl:attribute name="caseid">
                 <xsl:value-of select="caseid"/>
               </xsl:attribute>
              <xsl:apply-templates/>
            </xsl:element>
         </xsl:template>
         ......
         ...... 
 这确实创造了我想要的东西,但因为< xsl:apply-templates />它处理所有节点.虽然我希望它一起跳过处理caseid和serid.这也适用于其他节点,这些节点在新的XML结构中不可用. 
 您可以使用空模板来抑制输入文档中某些节点的输出: 
  
  
                          <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="mycase">
    <mycase caseid="{caseid}">
      <xsl:apply-templates select="@*|node()"/>
    </mycase>
  </xsl:template>
  <xsl:template match="caseid|serid"/>
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- c# – string和StringBuilder有什么区别?
 - React-native View组件transform样式
 - Thoughts on Flash
 - 【Oracle】将数据批量导入到Oracle数据库
 - SQLite Insert 语句(http://www.w3cschool.cc/sqlite/sqlit
 - ruby-on-rails – 在切换EC2实例Ruby on Rails时维护Cookie
 - 详解利用 Express 托管静态文件的方法
 - vue与vue-i18n结合实现后台数据的多语言切换方法
 - C#Web服务 – 返回然后最后 – 首先发生什么
 - c – 可以复制elision / RVO导致同一对象的复制/移动
 
