我很难引用所有3个。 我已经编写了我的XML,XSD和XSL,但它似乎不适用于引用。 这是一个使用相同引用的简单示例。
XSD:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="email">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="email.xsl"?>
<email
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com email.xsd">
<to>John</to>
</email>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="email">
<h2>To</h2>
<td><xsl:value-of select="John"/></td>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:3)
XSLT不起作用,因为您的email
元素具有命名空间,并且要使用XPath将元素与命名空间匹配,您必须明确声明前缀并使用它。
你需要像这样编写XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ws="http://www.w3schools.com"
version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="ws:email">
<h2>To</h2>
<td><xsl:value-of select="ws:to"/></td>
</xsl:for-each>
</body>
</html>
</xsl:template>
我不确定您对XSD的期望是什么:它似乎是正确的,但它不会以任何方式影响XSLT的应用。
email
是XML中的根元素,因此每个XML文件只能有一个email
元素 - 可能你应该在它上面有一个不同的根元素。
另请注意,您正在生成可疑的HTML:<td>
不在表格内。