我是xml和xsl的新手,我努力让我的xsl文件正常工作。我有这个xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="recipes-to-html.xsl"?>
<?dsd href="recipes.dsd"?>
<collection xmlns="http://recipes.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://recipes.org recipes.xsd">
</collection>
我有这个xsl文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:r="http://recipes.org">
<xsl:output method="xml"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
encoding="UTF-8"
indent="yes"
/>
<xsl:template match="collection">
<html>
<head>
<title>Collection of Recipies</title>
</head>
<body>
<h1>Collection of Recipies</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
xml文件当然包含更多内容,但我已经在这里挣扎了。当我打开xml文件时没有显示任何内容,这表明它没有注册集合元素。但据我所知,我做的一切都是正确的。
有人可以帮帮我吗?
编辑: 我已经尝试过xsltproc,它说它无法解析文件。当我更换&#34;集合&#34;在xslt文件中匹配&#34; /&#34;有用。我不知道可以做些什么。
答案 0 :(得分:1)
在xpath-default-namespace="http://recipes.org"
元素上使用xsl:stylesheet
以确保路径表达式和匹配模式不使用名称中的任何前缀(例如collection
)选择或匹配XML的默认命名空间中的元素输入文件。
答案 1 :(得分:0)
您已将默认命名空间http://recipes.org
绑定到前缀r
;你只需要在你的XPath中使用它......
<xsl:template match="r:collection">
<html>
<head>
<title>Collection of Recipies</title>
</head>
<body>
<h1>Collection of Recipies</h1>
</body>
</html>
</xsl:template>
您可能还应添加exclude-result-prefixes="r"
,以排除不需要/不需要的命名空间。