新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 计算机科学论坛XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [求助]如何在结果树中去掉命名空间和属性 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5176 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]如何在结果树中去掉命名空间和属性 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     txnnh 美女呀,离线,快来找我吧!
      
      
      等级:大二(研究汇编)
      文章:29
      积分:250
      门派:XML.ORG.CN
      注册:2006/11/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给txnnh发送一个短消息 把txnnh加入好友 查看txnnh的个人资料 搜索txnnh在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看txnnh的博客楼主
    发贴心情 [求助]如何在结果树中去掉命名空间和属性

    <?xml version="1.0" encoding="UTF-8"?>
    <DOC xmlns:cops="http://www.cops.net/document">
     <cops:DeliveryInstruction>
      <cops:Channel>
       <cops:ServiceProvider>1</cops:ServiceProvider>
       <cops:Name>cops</cops:Name>
      </cops:Channel>
      <cops:From>
       <cops:ServiceProvider>1</cops:ServiceProvider>
       <cops:TradingPartner>aaaaaaa</cops:TradingPartner>
      </cops:From>
      <cops:To>
       <cops:ServiceProvider>1</cops:ServiceProvider>
       <cops:TradingPartner>bbbbbb</cops:TradingPartner>
      </cops:To>
     </cops:DeliveryInstruction>
     <cops:Header>
      <cops:FormURI>http://www.cops.net/form/1/aaaaaaa/po/1</cops:FormURI>
      <cops:Owner cops:id="efa6c181c0a802830097f6219d0e68b4">
       <cops:ServiceProvider>1</cops:ServiceProvider>
       <cops:TradingPartner>aaaaaaa</cops:TradingPartner>
      </cops:Owner>
      <cops:Originator cops:id="efa6c181c0a802830097f6219d0e68b4">
       <cops:ServiceProvider>1</cops:ServiceProvider>
       <cops:TradingPartner>aaaaaaa</cops:TradingPartner>
      </cops:Originator>
      <cops:Reference>aaaaaaa-po-20071123084027.176</cops:Reference>
      <cops:Version>1</cops:Version>
     </cops:Header>
     <DocType>850</DocType>
     <OrderStatus>21</OrderStatus>
     <OrderType>SA</OrderType>
     <POCDate/>
     <LIN id="1">
      <ItemID>10</ItemID>
      <ItemChange/>
      <LINOrderedQuantity>15</LINOrderedQuantity>
      <LINQuantityUOM>EA</LINQuantityUOM>
      <LINUnitPrice>1.2</LINUnitPrice>
      <LINRouting/>
     </LIN>
     <LIN id="2">
      <ItemID>20</ItemID>
      <ItemChange/>
      <LINOrderedQuantity>30</LINOrderedQuantity>
      <LINQuantityUOM>EA</LINQuantityUOM>
      <LINUnitPrice/>
      <LINRouting>Truck</LINRouting>
     </LIN>
    </DOC>


    我想要的输出结果是这样的:
    <?xml version="1.0" encoding="UTF-8"?>
    <DOC>
     <DeliveryInstruction>
      <Channel>
       <ServiceProvider>1</ServiceProvider>
       <Name>cops</Name>
      </Channel>
      <From>
       <ServiceProvider>1</ServiceProvider>
       <TradingPartner>aaaaaaa</TradingPartner>
      </From>
      <To>
       <ServiceProvider>1</ServiceProvider>
       <TradingPartner>bbbbbb</TradingPartner>
      </To>
     </DeliveryInstruction>
     <Header>
      <FormURI>http://www.cops.net/form/1/aaaaaaa/po/1</FormURI>
      <Owner id="efa6c181c0a802830097f6219d0e68b4">
       <ServiceProvider>1</ServiceProvider>
       <TradingPartner>aaaaaaa</TradingPartner>
      </Owner>
      <Originator id="efa6c181c0a802830097f6219d0e68b4">
       <ServiceProvider>1</ServiceProvider>
       <TradingPartner>aaaaaaa</TradingPartner>
      </Originator>
      <Reference>aaaaaaa-po-20071123084027.176</Reference>
      <Version>1</Version>
     </Header>
     <DocType>850</DocType>
     <OrderStatus>21</OrderStatus>
     <OrderType>SA</OrderType>
     <POCDate></POCDate>
     <LIN>
      <ItemID>10</ItemID>
      <ItemChange></ItemChange>
      <LINOrderedQuantity>15</LINOrderedQuantity>
      <LINQuantityUOM>EA</LINQuantityUOM>
      <LINUnitPrice>1.2</LINUnitPrice>
      <LINRouting></LINRouting>
     </LIN>
     <LIN>
      <ItemID>20</ItemID>
      <ItemChange></ItemChange>
      <LINOrderedQuantity>30</LINOrderedQuantity>
      <LINQuantityUOM>EA</LINQuantityUOM>
      <LINUnitPrice></LINUnitPrice>
      <LINRouting>Truck</LINRouting>
     </LIN>
    </DOC>

    也就是说,要去掉所以的 命名空间前缀和属性 ,再有就是如果某个结点为空,不能是
    以<AAAA/>表示,要用:<AAAA></AAAA>

    要怎么设置换器呀?


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/26 13:34:00
     
     txnnh 美女呀,离线,快来找我吧!
      
      
      等级:大二(研究汇编)
      文章:29
      积分:250
      门派:XML.ORG.CN
      注册:2006/11/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给txnnh发送一个短消息 把txnnh加入好友 查看txnnh的个人资料 搜索txnnh在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看txnnh的博客2
    发贴心情 
    笨的方法:

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cops="http://www.cops.net/document">
     <xsl:output method="text"/>
     <xsl:template match="/">
      <xsl:apply-templates select="DOC" mode="AAAAA"/>
     </xsl:template>
     <xsl:template match="DOC" mode="AAAAA">
      <xsl:text>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</xsl:text>
      <xsl:text>&lt;DOC&gt;</xsl:text>
      <xsl:for-each select="node()[name() ='cops:DeliveryInstruction']">
       <xsl:text>&lt;</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:call-template name="writeChildNode"/>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
      <xsl:for-each select="node()[name() ='cops:Header']">
       <xsl:text>&lt;</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:call-template name="writeChildNode"/>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
      <xsl:for-each select="node()[name() !='cops:DeliveryInstruction' and name() !='cops:Header' and name() !='LIN'">
       <xsl:text>&lt;</xsl:text>
      <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:value-of select="."/>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
      <xsl:for-each select="node()[name() ='LIN']">
       <xsl:text>&lt;</xsl:text>
       <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:call-template name="writeNoNameSpacePrefixNode"/>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
        </xsl:for-each>
      <xsl:text>&lt;/DOC&gt;</xsl:text>
     </xsl:template>
     <xsl:template name="writeNoNameSpacePrefixNode">
      <xsl:for-each select="node()">
       <xsl:text>&lt;</xsl:text>
       <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:choose>
        <xsl:when test="count(child::*) &gt; 0">
         <xsl:call-template name="writeNoNameSpacePrefixNode"/>
        </xsl:when>
        <xsl:otherwise>
         <xsl:value-of select="."/>
        </xsl:otherwise>
       </xsl:choose>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="name()"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
     </xsl:template>
     <xsl:template name="writeChildNode">
      <xsl:for-each select="node()">
       <xsl:text>&lt;</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
       <xsl:choose>
        <xsl:when test="count(child::*) &gt; 0">
         <xsl:call-template name="writeChildNode"/>
        </xsl:when>
        <xsl:otherwise>
         <xsl:value-of select="."/>
        </xsl:otherwise>
       </xsl:choose>
       <xsl:text>&lt;/</xsl:text>
       <xsl:value-of select="substring-after(name(),':')"/>
       <xsl:text>&gt;</xsl:text>
      </xsl:for-each>
     </xsl:template>
    </xsl:stylesheet>

    [此贴子已经被作者于2007-11-26 16:59:31编辑过]
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/26 16:29:00
     
     txnnh 美女呀,离线,快来找我吧!
      
      
      等级:大二(研究汇编)
      文章:29
      积分:250
      门派:XML.ORG.CN
      注册:2006/11/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给txnnh发送一个短消息 把txnnh加入好友 查看txnnh的个人资料 搜索txnnh在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看txnnh的博客3
    发贴心情 
    有没有高人知道在 xsl(t) 里怎么设一个属性什么的,  可以让转换后所有形如:
    <AAAAA/>  变成 <AAAAA></AAAAA>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/26 17:14:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客4
    发贴心情 
    以下是引用txnnh在2007-11-26 17:14:00的发言:
    有没有高人知道在 xsl(t) 里怎么设一个属性什么的,  可以让转换后所有形如:
    <AAAAA/>  变成 <AAAAA></AAAAA>


    XSL中没有此功能吧。
    MSXML 等大多数DOM解析器似乎不行,但也不定,有些版本的解析器则可以。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/26 17:18:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/12/19 4:57:09

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    6,255.859ms