1

属性値が「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>
4

2 に答える 2

0

はの子<xsl:template/>になることはできない<xsl:template/>ため、スタイルシートは現在無効であり、XMLとXSLの使用方法によっては、どこかでエラーが発生している可能性があります。

1つの解決策は、個別<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>
于 2013-03-18T17:39:24.330 に答える
0

@andybが指摘したように、テンプレート内にテンプレートを含めることはできません。xsl:apply-templatesある場所で使用するつもりだったのかもしれxsl:templateませんが、現在のコンテキストにはカタログの上にノードがあるため、使用したパスでも機能しませんでした。オプションは、イニシャルを変更して、次の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>
于 2013-03-18T17:54:08.357 に答える