我读了其他问题。文件看起来很相似,所以我不知道,这里的错是什么......
这是我的XML:
<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="/Projekt1.xsl"?>
<x:projekte xmlns:x="urn:Projekt1">
<person id= "1">
<name>Franz Mommar</name>
<link>http://pd.zhaw.ch/portraet/images/</link>
<zhaw>mino.jpg</zhaw>
<googlemapsx>285.2342</googlemapsx>
<googlemapsy>234.3598</googlemapsy>
<facebook>franzmoammar</facebook>
<skype>franz.moammar</skype>
<twitter>franzmoammar</twitter>
</person>
<person id= "2">
<name>Rüdiger Mannheim</name>
<link>http://www.poese.org/wp-content/uploads/2010/07/</link>
<zhaw>AWNEX74E.jpg</zhaw>
<googlemapsx>45.2342</googlemapsx>
<googlemapsy>32.3598</googlemapsy>
<facebook>franzmoammar</facebook>
<skype>franz.moammar</skype>
<twitter>franzmoammar</twitter>
</person>
</x:projekte>
这是xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Name</th>
<th>X-Coordinate</th>
<th>Y-Coordinate</th>
<th>Facebook</th>
<th>Skype</th>
<th>Twitter</th>
<th>Bild</th>
</tr>
<xsl:for-each select="projekte/person">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="googlemapsx"/></td>
<td><xsl:value-of select="googlemapsy"/></td>
<td><xsl:value-of select="facebook"/></td>
<td><xsl:value-of select="skype"/></td>
<td><xsl:value-of select="twitter"/></td>
<!--<td><src href="{link}{zhaw}"/></td>-->
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我正在尝试这些文件,但我没有找到解决方案。
我右键点击XML - &gt;打开 - &gt;火狐
答案 0 :(得分:4)
命名空间可能是你的问题。在您的XML中, projekte 元素位于命名空间“urn:Projekt1”
<x:projekte xmlns:x="urn:Projekt1">
但是在XSLT中没有对名称空间的引用,因此它在没有名称空间的情况下寻找 projekte 元素,因此不会匹配名称空间中的名称。
解决方案是在XSLT中声明命名空间
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="urn:Projekt1" exclude-result-prefixes="x">
然后在匹配元素
时使用xpath表达式中的前缀<xsl:for-each select="x:projekte/person">
如果输出中没有实际元素使用命名空间,则“exclude-result-prefixes”用于停止输出XML,包括命名空间声明。
或者,您可以在xpath表达式中使用通配符,然后您不必担心声明命名空间
<xsl:for-each select="*/person">
答案 1 :(得分:0)
如果您在源代码中使用'/ Project,它会假定查看当前驱动器的根目录,只需在xml文件的源代码中使用Projekt1.xsl,即不使用/