专题1234导航

xsl如何取xml中属性含有冒号的值

来源:互联网
发表时间:2017/4/20 10:44:54
责任编辑:王亮
字体:

为了帮助网友解决“xsl如何取xml中属性含有冒号的值”相关的问题,学网通过互联网对“xsl如何取xml中属性含有冒号的值”相关的解决方案进行了整理,用户详细问题包括:xml代码如下
<people pattr="p1">
<title>电动汽车1</title>
<QA   xmlns:ouchy="http://pic.xue163.com/http://www.ouchy.ch1111111" ouchy:EQID="aaa">
        </QA>
</people>

问题:在xsl中如何取得ouchy:EQID的值
<xsl:apply-templates select="people/QA/@ouchy:EQID> 这样取直接报错

,具体解决方案如下:

解决方案1:
报错的原因主要是你在你的XSLT文件中并没有定义ouchy对应的名称空间.
可以参考下面的代码
source.xml


<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<people pattr="p1">
<title>电动汽车1</title>
<QA  xmlns:ouchy="http://pic.xue163.com/http://www.ouchy.ch1111111" ouchy:EQID="aaa"/>
</people>

xslt.xsl

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet 
version="2.0"
xmlns:xsl="http://pic.xue163.com/http://www.w3.org/1999/XSL/Transform"
xmlns:ouchy="http://pic.xue163.com/http://www.ouchy.ch1111111"
exclude-result-prefixes="ouchy">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:value-of select="people/QA/@ouchy:EQID"/>
</xsl:template>
</xsl:stylesheet>

解决方案2:
当然还有另一种写法如下.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet 
version="2.0"
xmlns:xsl="http://pic.xue163.com/http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="people/QA/@*[namespace-uri()='http://pic.xue163.com/http://www.ouchy.ch1111111' and local-name()='EQID']"/>
</xsl:template>
</xsl:stylesheet>

解决方案3:
多谢 rickylin86 的回答,受益匪浅,非常感谢。
刚开始拿不到我是通过循环拿的
<xsl:for-each select= "/*/QA/@* ">
<xsl:if test="name()='ouchy:EQID'">
<xsl:value-of select= "."/>
</xsl:if>
</xsl:for-each> 
你的方法才是正途,非常感谢。

解决方案4:
rickylin86 你好 ,我刚才试了下你的方法还是拿不到数据
代码如下
[code=xsl]
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://pic.xue163.com/http://www.w3.org/1999/XSL/Transform"
xmlns:ouchy="http://pic.xue163.com/http://www.ouchy.ch" exclude-result-prefixes="ouchy"
>
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
  <html>
  <body>
<xsl:for-each select= "/*/QA/@* ">
<xsl:value-of select= "name()"/>
<br/>
</xsl:for-each> 
<!-- 通过循环可以取到值 -->
<xsl:for-each select= "/*/QA/@* ">
<xsl:if test="name()='ouchy:EQID'">
<xsl:value-of select= "."/>
</xsl:if>
</xsl:for-each> 
<hr/>

<!-- 下边几种方法还是取不到值 -->
<xsl:value-of select="people/QA/@ouchy:EQID"/><hr/>
<xsl:apply-templates select="people/QA/@ouchy:EQID"/><hr/>
<xsl:value-of select="people/QA/@*[namespace-uri()='http://pic.xue163.com/http://www.ouchy.ch' and local-name()='EQID']"/>

  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

[/code]

拿不到数据

解决方案5:
不好意思我自己弄错了,可以取到。

www.xue163.com true http://www.xue163.com/588880/39215/392157181.html report 4109 xsl如何取xml中属性含有冒号的值:解决方案1:报错的原因主要是你在你的XSLT文件中并没有定义ouchy对应的名称空间.可以参考下面的代码source.xml<?xml version="1.0" encoding="GB2312" standalone="yes"?><people pattr="p1"><title>电动汽车1</title><QA  xmlns:ouchy="http://pic.xue163.com/h...
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号