2017-05-20 14 views
0

おはようございます!テンプレートが正しく適用されないXSL

私はこのXMLを持っている:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="Relatorio.xsl"?> 
<relatório id="LPROG" xmlns="http://www.dei.isep.ipp.pt/lprog" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog Relatorio.xsd"> 
    <páginaRosto> 
     <tema>oRolhas</tema> 

     <!--Bunch of other fields--> 

    </páginaRosto> 

    <!--Bunch of other fields--> 

</relatório> 

XMLを正しく指定したXSDを使用して形成され、検証されます。この単純なの.xsl適用後

:出力

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title/> 
      </head> 
      <body> 
       <h1 align="center">Relatório Trabalho</h1> 
       <xsl:apply-templates select="relatório/páginaRosto"/> 
      </body> 
     </html> 
    </xsl:template> 


    <xsl:template match="páginaRosto"> 
     <h1>Page</h1> 
     <h2>Tema: 
      <xsl:value-of select="tema"/> 
     </h2> 
    </xsl:template> 



</xsl:stylesheet> 

は次のとおりです。

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title></title> 
</head> 
<body><h1 align="center">Relatório Trabalho</h1></body> 
</html> 

それは、 "印刷" "páginaRosto" テンプレートではない、と私はその理由を把握することはできません。 私のXPath式に問題はありますか?それともXMLファイルに問題がありますか?事前

+0

ので、OPは、ルートノードを削除する必要がありますか!? – wero

+0

@weroタイトルではなく*回答*を読むことをお勧めします。 –

答えて

0

おかげでXMLがXPath式は同じ名前空間を使用する必要があります(ただし、非空の接頭辞を定義しなければなりません)デフォルトの名前空間内の要素を一致させるには、デフォルトの名前空間xmlns="http://www.dei.isep.ipp.pt/lprog"

を定義しています

<xsl:apply-templates 
    xmlns:p="http://www.dei.isep.ipp.pt/lprog"  
    select="p:relatório/p:páginaRosto"/> 
0

XML:

<relatório id="LPROG" xmlns:lp="http://www.dei.isep.ipp.pt/lprog" 
    ... 
</relatório> 

XSL:

<xsl:apply-templates xmlns:lp="http://www.dei.isep.ipp.pt/lprog" select="relatório/páginaRosto"/> 

結果:michael.hor257k @

<html> 
    <head> 
     <title/> 
    </head> 
    <body> 
     <h1 align="center">Relatório Trabalho</h1> 
     <h1>Page</h1> 
     <h2>Tema: 
      oRolhas</h2> 
    </body> 
</html>