*我发现问题似乎是由于行
的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>
答案 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
元素上。