gpt4 book ai didi

xml - XSL 值返回不匹配

转载 作者:行者123 更新时间:2023-12-03 16:37:22 25 4
gpt4 key购买 nike

好吧,我正在尝试使用 XSLT 将 XHTML 文档转换为 RDF/XML(不要问,这是一项任务),其中 RDF 文件的信息位于 XHTML 文档的元标记中。我完成了第一个 XPath 查询以定位 about 的值。 <rdf:Description> 的属性.我在一个单独的网站上测试了 XPath 查询,它返回了正确的结果。但是,当我尝试将它合并到我的 XSLT 中时,结果是一个空字符串。

我只是在寻找正确方向的插入力。我看不出我哪里错了。这是示例 XHTML 文档。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="TN6_Q6.xsl" type="text/xsl" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
<meta name="DC.title" content="le titre de mon document" />
...
<title>...</title>
</head>
<body>
...
</body>
</html>

这就是我迄今为止构建的 XSLT。我知道这看起来很糟糕,但又一次......这就是任务。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:template match="*">
<html><body><pre>
&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;
&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" &gt;
&lt;rdf:Description rdf:about="

<!-- THIS LINE -->
<xsl:value-of select="html/*[local-name()='head']/*[local-name()='link']/@href"/>"&gt;

&lt;/rdf:Description&gt;
&lt;/rdf:RDF&gt;
</pre></body></html>
</xsl:template>
</xsl:stylesheet>

您可以在这里测试 XPath:
http://www.xpathtester.com/saved/85785aab-0449-472e-a94f-77ee49d4e330

最佳答案

您的模板匹配 "*"所以 value-of 时的上下文节点被评估将是根html元素。因此,您只需要从 head 开始路径:

<xsl:value-of select="*[local-name()='head']/*[local-name()='link']/@href"/>

或优于 local-name()诀窍是使用您已在 <xsl:stylesheet> 中声明命名空间这一事实。并在路径中使用相应的限定名称:
<xsl:value-of select="xhtml:head/xhtml:link/@href" />

您也可以考虑将模板更改为 match="/"而不是 match="*" ,在这种情况下,上下文将是文档根节点而不是 html元素,因此您需要添加 html到路径的前面:
<xsl:value-of select="xhtml:html/xhtml:head/xhtml:link/@href" />

关于xml - XSL 值返回不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com