Xml 导致foreach语句中出现问题的XSLT命名空间
关于这个问题,我已经看了几个不同的答案,但由于我对这个转换主题还不熟悉,我觉得我犯了一个明显的错误,我根本看不出来 这是我的Xml 导致foreach语句中出现问题的XSLT命名空间,xml,xslt,Xml,Xslt,关于这个问题,我已经看了几个不同的答案,但由于我对这个转换主题还不熟悉,我觉得我犯了一个明显的错误,我根本看不出来 这是我的xml <application xmlns:os="http://url..." name="test"> <catalog> <cd> <title> Empire Burlesque </title> <artist> Bob Dylan </artist>
xml
<application xmlns:os="http://url..." name="test">
<catalog>
<cd>
<title> Empire Burlesque </title>
<artist> Bob Dylan </artist>
<country> USA </country>
<company> Columnbia </company>
</cd>
</catalog>
</application>
输出当前为:
标题艺术家
但我希望输出是:
标题艺术家
帝国滑稽剧鲍勃·迪伦
我不确定错误是什么。我尝试将模板设置为
/
,但这似乎也不起作用除了缺少结束引号之外,“os:catalog/cd
将不匹配,因为catalog
元素不在XML中的命名空间中。请将xsl:for each/@select
更改为”catalog/cd”“
以匹配XML中的目录/cd
元素
了解命名空间前缀的声明
xmlns:os="http://url..."
并不意味着名称空间实际上在XML中的任何地方使用;就XML而言,事实并非如此
将其与默认名称空间声明进行对比
xmlns="http://url..."
它会自动将关联元素及其子元素放置在默认命名空间中。因此,如果我要删除前缀,
catalog/cd
将匹配,因为它“自动将关联元素及其子元素放置在默认命名空间中”?删除os
前缀将允许catalog/cd
匹配,因为os
命名空间前缀已声明,但从未在XML中使用。您的XML没有默认名称空间;它有一个未使用名称空间前缀的声明。因此在工作版本中(我现在无法测试),它将是我拥有的,但是xml
和xsl
文件中前缀os
的每个实例都将消失。这是正确的吗?如果是这样,我可以将模板更改为与/
(所有内容)匹配,还是必须是应用程序
?您似乎需要更多关注此主题,而不是本网站的基本问答格式。如果有帮助,请回答这个问题,进一步解决你的问题,必要时再问一个新问题。谢谢
xmlns="http://url..."