Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 导致foreach语句中出现问题的XSLT命名空间_Xml_Xslt - Fatal编程技术网

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..."