如果我的XML文件具有与其关联的模式,则XSLT不起作用
如果我从XML中删除模式定义,那么XSLT可以工作,但我无法使它与定义的模式一起工作。我知道这个问题已经得到了回答,但我的问题似乎无法解决。我有以下XML头文件:如果我的XML文件具有与其关联的模式,则XSLT不起作用,xml,xslt,schema,xsd,Xml,Xslt,Schema,Xsd,如果我从XML中删除模式定义,那么XSLT可以工作,但我无法使它与定义的模式一起工作。我知道这个问题已经得到了回答,但我的问题似乎无法解决。我有以下XML头文件: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="student.xsl"?> <Students xmlns="http:/www.example.com" xmlns:xsi="http://w
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<Students xmlns="http:/www.example.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com student.xsd">
<Student>
<SSN>622-12-5748</SSN>
<Name>
<First-Name>Alexander</First-Name>
<Last-Name>Mart</Last-Name>
</Name>
<Age>26</Age>
<Institution>UCSF</Institution>
<Email>Alexander@yahoo.com</Email>
</Student>
</Students>
622-12-5748
亚力山大
市场
26
加州大学旧金山分校
Alexander@yahoo.com
这是我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xsi="http://www.example.com">
<xsl:template match="/">
<html>
<body>
<h2>Student Information</h2>
<table border="1">
<tr bgcolor="yellow">
<th>SSN</th>
<th>First Name</th>
</tr>
<xsl:for-each select="xsi:Students/Student">
<tr>
<td>
<xsl:value-of select="xsi:SSN"/>
</td>
<td>
<xsl:value-of select="xsi:Name/First-Name"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
学生信息
SSN
名字
我犯了什么愚蠢的错误?提前谢谢 尝试在您的for-each-select中使用“xsi:Student/xsi:Student”
编辑:
在您的名字中也选择:“xsi:name/xsi:first name”尝试在您的名字中使用“xsi:Students/xsi:Student”进行选择
编辑:
在您的名字中也选择:“xsi:name/xsi:first name”
我犯了什么愚蠢的错误?谢谢
提前
因为XML文档位于默认名称空间中,并且因为XML文档没有属于“无名称空间”的节点,所以任何XPath表达式中的任何未固定元素名称都不会选择任何内容
您已经开始使用带前缀的名称,但尚未完全使用
更改:
<xsl:for-each select="xsi:Students/Student">
至
<xsl:for-each select="xsi:Students/xsi:Student">
<xsl:value-of select="xsi:Name/xsi:First-Name"/>
和更改:
<xsl:value-of select="xsi:Name/First-Name"/>
至
<xsl:for-each select="xsi:Students/xsi:Student">
<xsl:value-of select="xsi:Name/xsi:First-Name"/>
我犯了什么愚蠢的错误?谢谢
提前
因为XML文档位于默认名称空间中,并且因为XML文档没有属于“无名称空间”的节点,所以任何XPath表达式中的任何未固定元素名称都不会选择任何内容
您已经开始使用带前缀的名称,但尚未完全使用
更改:
<xsl:for-each select="xsi:Students/Student">
至
<xsl:for-each select="xsi:Students/xsi:Student">
<xsl:value-of select="xsi:Name/xsi:First-Name"/>
和更改:
<xsl:value-of select="xsi:Name/First-Name"/>
至
<xsl:for-each select="xsi:Students/xsi:Student">
<xsl:value-of select="xsi:Name/xsi:First-Name"/>
问得好,+1。请参阅我的答案以了解解释和解决方案。最明显的“愚蠢错误”是http://www.example.com
和源文档中的http:/www.example.com
。除此之外,对http://www.w3.org/2001/XMLSchema-instance
是完全合法的,但很可能会让读者感到困惑。哦,example.com引用之间的差异只是我在将问题翻译为StackOverflow时犯的一个错误。这不是我实际文档中的问题。不过迪米特里帮我弄明白了。感谢您提供关于不在名称空间中使用xsi的提示。在我多次尝试解决这个问题时,我曾尝试过这样做,因为它是模式文档中XMLSchema实例的前缀。我很高兴知道这是一个不恰当的使用,虽然。可能重复的好问题,+1。请参阅我的答案以了解解释和解决方案。最明显的“愚蠢错误”是http://www.example.com
和源文档中的http:/www.example.com
。除此之外,对http://www.w3.org/2001/XMLSchema-instance
是完全合法的,但很可能会让读者感到困惑。哦,example.com引用之间的差异只是我在将问题翻译为StackOverflow时犯的一个错误。这不是我实际文档中的问题。不过迪米特里帮我弄明白了。感谢您提供关于不在名称空间中使用xsi的提示。在我多次尝试解决这个问题时,我曾尝试过这样做,因为它是模式文档中XMLSchema实例的前缀。我很高兴知道这是一个不适当的使用,虽然。可能重复的哦,老兄,谢谢你这么多。那完全正确。我感谢你的帮助!哦,老兄,非常感谢你。那完全正确。我感谢你的帮助!