2009-08-18 18 views
1

xsltの理解に問題があります。私のソース文書では、に等しいクラス属性を持つ<p>タグから内部のテキストを見つけなければなりません。どこかに私のソースXMLでxslt属性を持つ要素の処理を理解する

:私のXSLファイルで

<body> 
    <p class="deck">Text here</p> 
... ... cut ... ... ... 

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:TimeInc="http://www.timeinc.com/namespaces/PAMTimeInc/1.0/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:prism="http://prismstandard.org/namespaces/basic/2.1/" 
    xmlns:pam="http://prismstandard.org/namespaces/pam/2.1/" 
    xmlns:pim="http://prismstandard.org/namespaces/pim/2.1/" 
    xmlns:prl="http://prismstandard.org/namespaces/prl/2.1/"> 

    <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/> 
    <Description> 
    <xsl:choose> 
     <xsl:when test="//[email protected] != ''"> 
     <xsl:value-of select="//[email protected]"/> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:text disable-output-escaping="yes"/> 
     </xsl:otherwise> 
    </xsl:choose> 
    </Description> 
... ... cut ... ... ... 

私は私がやっているかわからないので、それは明らかに間違っています。どのようにこれを行うか、それをもっと理解する方法の例がありますか?

答えて

2

テンプレートのベースとなるanywhateverは表示されません。私はこれがカットアンドペーストの問題であると仮定しています。

とにかく、デッキにセットクラス属性を持つすべてのp要素を見つけるためのXPathは次のとおりです。 // P [する@クラス= 'デッキ']

あなたがでそれらを反復処理でき

<xsl:for-each select="//p[@class='deck'"> 
</xsl:for-each> 
+1

は、最終的なコードは、ビーイングを終わった、どうもありがとうございました: ます。 ます。 stephenbayer

2

あなたはあなたの特定のケースについては、例えば

element[@attribute = 'hello'] 

のために、との属性値に基づいて要素を条件と一致するものを表現することができます。

<p class="deck">Text here</p> 

試してみてください。

//p[@class = 'deck']/text() 

これはXPath式であり、すべてのp要素のテキストコンテンツのシーケンスを返すものとして読み取ることができますh値が 'deck'の属性クラス。

XSLTはXPathを使用してXMLドキュメントをナビゲートするため、XPathとXSLTを読む価値があります。

+0

私は今w3schoolsを読んでいますが、言語と概念を理解するのが難しいです。彼らの "試してください"セクションでは、私は変更を行い、その変更が何をしているのかを理解することによって、理解を得ることができます。私はXPathでも読んでいます。 – stephenbayer

2

うーん...おそらくこのようなもの:

<Description> 
    <xsl:choose> 
     <xsl:when test="//p[@class='deck']"> 
      <xsl:value-of select="//p[@class='deck']" /> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:test> </xsl:text> 
     </xsl:otherwise> 
    </xsl:choose> 
</Description> 
関連する問題