我有以下XML片段
<?xml version="1.0" encoding="UTF-8"?>
<Sheet version="1.0" xmlns:j="http://www.it.ojp.gov/jxdm/3.0.2">
<Subject xmlns="http://www.it.ojp.gov/jxdm/3.0.2">
<PersonName>
<PersonGivenName>EDWIN</PersonGivenName>
<PersonMiddleName>J</PersonMiddleName>
<PersonSurName>TURNER</PersonSurName>
</PersonName>
</Subject>
</Sheet>
我尝试使用以下XSLT选择Subject节点
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="Sheet/Subject"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我正在http://www.shell-tools.net/index.php?op=xslt上测试此细分受众群。
如果我使用写入的XML运行转换,则select属性不匹配。但是,如果我从Subject节点中删除命名空间,它将正确选择数据。
我正在寻找关于如何使选择与附加到Subject节点的命名空间一起工作的语法,因为这是从Web服务接收数据的方式。
答案 0 :(得分:2)
您需要为sheet
文档的命名空间定义别名。 xsl应如下所示:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:sheet="http://www.it.ojp.gov/jxdm/3.0.2" <--- Define an alias
exclude-result-prefixes="sheet" <--- Prevent xslt from using this
namespace in the output document
>
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="Sheet/sheet:Subject"/> <--- Use alias
</body>
</html>
</xsl:template>
</xsl:stylesheet>