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

qq_32228181 2017-04-18 01:30:20
xml代码如下
<people pattr="p1">
<title>电动汽车1</title>
<QA xmlns:ouchy="http://www.ouchy.ch1111111" ouchy:EQID="aaa">
</QA>
</people>

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

...全文
774 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32228181 2017-04-19
  • 打赏
  • 举报
回复
不好意思我自己弄错了,可以取到。
qq_32228181 2017-04-19
  • 打赏
  • 举报
回复
rickylin86 你好 ,我刚才试了下你的方法还是拿不到数据 代码如下 [code=xsl] <?xml version="1.0" encoding="utf-8" standalone="yes"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ouchy="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://www.ouchy.ch' and local-name()='EQID']"/> </body> </html> </xsl:template> </xsl:stylesheet> [/code] 拿不到数据
qq_32228181 2017-04-19
  • 打赏
  • 举报
回复
多谢 rickylin86 的回答,受益匪浅,非常感谢。 刚开始拿不到我是通过循环拿的 <xsl:for-each select= "/*/QA/@* "> <xsl:if test="name()='ouchy:EQID'"> <xsl:value-of select= "."/> </xsl:if> </xsl:for-each> 你的方法才是正途,非常感谢。
rickylin86 2017-04-19
  • 打赏
  • 举报
回复
当然还有另一种写法如下.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet 
	version="2.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<xsl:value-of select="people/QA/@*[namespace-uri()='http://www.ouchy.ch1111111' and local-name()='EQID']"/>
	</xsl:template>
</xsl:stylesheet>
rickylin86 2017-04-19
  • 打赏
  • 举报
回复
报错的原因主要是你在你的XSLT文件中并没有定义ouchy对应的名称空间. 可以参考下面的代码 source.xml

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<people pattr="p1">
	<title>电动汽车1</title>
	<QA  xmlns:ouchy="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://www.w3.org/1999/XSL/Transform"
	xmlns:ouchy="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>

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧