XSLT Translation中的名称空间问题

时间:2017-11-13 17:18:35

标签: xml xslt

*我发现问题似乎是由于行

的xmlns =" HTTP://sample.com/task/1.0"

没有分配名称空间,当我添加一个(ns1)时,似乎翻译了我想要的方式。我修改过的问题是"为什么没有为命名空间分配问题,如果我想在许多文件中更改它,我该怎么做?"

我是XSLT的新手,但我正在尝试获取XML文档并将其转换为RDF。我的方法是从一个简单的翻译开始,以纯文本中的一些XML术语开始。我拿了一个XML文件,删除了名称空间,并且能够正确地显示内容。

在此迭代中,我将命名空间添加回XML文件,但不允许它们在标记中引用。我还将它们添加到XSL文件中。当我运行翻译时,我只得到我在值之前写的文本。但是,当我将xsl:template匹配更改为" / *"之外的任何内容时,我得到的是值而不是文本。这是代码

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<getCollectiveTaskResponse xmlns="http://sample.com/task/1.0" xmlns:ns2="http://sample.com/commonElements/1.0" xmlns:ns3="http://sample.com/individualTask/1.0" xmlns:ns4="http://sample.com/collectiveTask/1.0" xmlns:ns5="http://sample.com/xsd/handle" xmlns:ns6="http://sample.com/appinfo/1">
<collectiveTask>
    <generalInformation>
        <number>13</number>
        <title>Quarterback</title>
        <name>Dan Marino</name>
    </generalInformation>    </collectiveTask>

这是XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://sample.com/task/1.0"     xmlns:ns2="http://sample.com/commonElements/1.0"     xmlns:ns3="http://sample.com/individualTask/1.0" xmlns:ns4="http://sample.com/collectiveTask/1.0" xmlns:ns5="http://sample.com/xsd/handle" xmlns:ns6="http://sample.com/appinfo/1">
<xsl:template match="/getCollectiveTaskResponse">



Number:<xsl:value-of select="collectiveTask/generalInformation/number"/>
Title:<xsl:value-of select="collectiveTask/generalInformation/title"/>
Name:<xsl:value-of select="collectiveTask/generalInformation/name"/>

</xsl:template>



</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

如果您使用的是XSLT 2或3处理器,那么就可以制作模板

<xsl:template match="/getCollectiveTaskResponse">



Number:<xsl:value-of select="collectiveTask/generalInformation/number"/>
Title:<xsl:value-of select="collectiveTask/generalInformation/title"/>
Name:<xsl:value-of select="collectiveTask/generalInformation/name"/>

</xsl:template>

您需要将xpath-default-namespace="http://sample.com/task/1.0"放在xsl:stylesheet元素上。