我只是尝试选择属性值为'cd'的节点'productgroep'。这不起作用,我真的不明白为什么,我搜索了答案,但没有找到任何答案。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Oefening_8.xsl"?>
<catalogus>
<!-- cd catalogus -->
<productgroep type="cd">
<item referentienummer="7051444" catalogusnummer="1800022" EAN="0025218000222">
...
</productgroep>
<productgroep type="film">
<item referentienummer="8051445" catalogusnummer="2800023" EAN="5051888073650">
....
</productgroep>
</catalogus
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Oefening_8.xsl</title>
<meta charset="utf-8"/>
<link href="Oefening_8.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<h1></h1>
<xsl:template match="productgroep[@type='cd']">
</xsl:template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
<xsl:template/>
不能是<xsl:template/>
的子项,因此您的样式表目前无效,可能会在某处出错,具体取决于您使用XML和XSL的方式。
一种解决方案是创建单独的<xsl:template>
并使用<xsl:apply-templates />
来处理源元素的子元素。
<xsl:template match="/">
<html>
<head>
<title>Oefening_8.xsl</title>
<meta charset="utf-8"/>
<link href="Oefening_8.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<h1></h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="productgroep[@type='cd']">
<xsl:value-of select="item/@catalogusnummer"/> <!-- print @catalogusnummer for example -->
</xsl:template>
答案 1 :(得分:0)
正如@andyb指出的那样,你不能在模板中有一个模板。您可能希望在xsl:apply-templates
处使用xsl:template
,但这对您使用的路径不起作用,因为当前上下文中存在节点 catalogus。您可以选择更改初始xsl:template
以使用以下任一选择根元素:
或
或使用xsl:apply-templates
中的完整路径:
我更喜欢第一种选择:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/*">
<html>
<head>
<title>Oefening_8.xsl</title>
<meta charset="utf-8"/>
<link href="Oefening_8.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<h1></h1>
<xsl:apply-templates select="productgroep[@type='cd']" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>