以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  求教:如何用xsl删除源树中的属性  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=74857)


--  作者:zllxjtu
--  发布时间:5/14/2009 1:54:00 PM

--  求教:如何用xsl删除源树中的属性
如:
源xml中有一段:

<Value name="NewData" fromMinorId="1">

          <Number size="8" isSigned="true" hasNan="false" hasInf="false"/>

        </Value>

我想生成的结果是:

<Value name="NewData">

          <Number size="8" isSigned="true" hasNan="false" hasInf="false"/>

        </Value>

就是没有了fromMinorId这个属性,请问中间的解析文件xsl该怎么编写?
谢谢!!


--  作者:Qr
--  发布时间:5/14/2009 2:19:00 PM

--  
通过XSL将XML转换为新的XML,注意使用XSL中的判断语法,判断如果属性名为fromMinorId,就不让<xsl:attribute>将其输出到新XML中即可。
--  作者:zllxjtu
--  发布时间:5/14/2009 2:42:00 PM

--  
谢谢

判断好做,我不知道如何不让<xsl:attribute>将其输出到新XML中


--  作者:Qr
--  发布时间:5/14/2009 6:02:00 PM

--  
输出就用,不输出就不用<xsl:attribute>

--  作者:zllxjtu
--  发布时间:5/18/2009 10:21:00 AM

--  
我写了一段,结果没影响,fromMinorId属性还是在。

  <xsl:template match="rxp:Command">
   <xsl:copy>
   <xsl:choose>
     <xsl:when test="fromMinorId!=''">
        
     </xsl:when>
     <xsl:otherwise>
        <xsl:apply-templates select="@*" />
     </xsl:otherwise>
   </xsl:choose>
  </xsl:copy>
  </xsl:template>

是这样,完整的xsl文件是个比较大的xsl文件,前面的部分实现了所有的拷贝和格式的规划。
我现在想新加进去一个模版,实现删除输出中fromMinorId这个属性的功能,就在后面加了上面这个模版,结果还是没有影响。


--  作者:Qr
--  发布时间:5/18/2009 11:15:00 AM

--  
因为fromMinorId不是节点,所以以下代码是错误的
<xsl:when test="fromMinorId!=''">
判断是否存在fromMinorId这个属性,可以
<xsl:when test="@fromMinorId">
--  作者:zllxjtu
--  发布时间:5/18/2009 4:29:00 PM

--  

大哥说的太对了,我又写了一段就可以了,多谢

<xsl:template match="*|@*" mode="#all">
    <xsl:copy>
    <xsl:choose>
    <xsl:when test="@fromMinorId">
       <xsl:attribute name="name" select="@name"/>
       <xsl:apply-templates select="*|text()"/>
     </xsl:when>
     <xsl:otherwise>
     <xsl:apply-templates select="@*|*|text()"/>
     </xsl:otherwise>
     </xsl:choose>  
    </xsl:copy>
  </xsl:template>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms