2017-02-11 4 views
0

を抽出していません。 XSLTを実行している...XSLT変換は、次のファイルからほとんど何も

<rdf:RDF xmlns:vc="http://example.org/vcard#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:h="http://www.w3.org/1999/xhtml"> 
    <rdf:Description rdf:about="vc:vcard_id0"> 
    <vc:hasName>Henry Riedel</vc:hasName> 
    <vc:hasNickName>hrick</vc:hasNickName> 
    <vc:phone>+4.444.444.4442</vc:phone> 
</rdf:Description> 

<rdf:Description rdf:about="vc:vcard_id1"> 
    <vc:hasName>Peter Liebig</vc:hasName> 
    <vc:hasNickName>pitty</vc:hasNickName> 
    <vc:phone>+7.777.777.7777.</vc:phone> 
</rdf:Description> 

<rdf:Description rdf:about="vc:vcard_id2"> 
    <vc:hasName>Ralph Schneider</vc:hasName> 
    <vc:hasNickName>Ralphy</vc:hasNickName> 
</rdf:Description> 

<rdf:Description rdf:about="vc:vcard_id3"> 
    <vc:hasName>Reiner Kuster</vc:hasName> 
</rdf:Description> 

</rdf:RDF> 

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:vc="http://example.org/vcard#" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:h="http://www.w3.org/1999/xhtml" 
exclude-result-prefixes="xs" 
version="2.0"> 

<xsl:template match="/"> 
    <rdf:RDF xmlns:vc="http://example.org/vcard#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:h="http://www.w3.org/1999/xhtml"> 

     <xsl:apply-templates select="*[@class='vcard']"/> 

    </rdf:RDF> 
</xsl:template> 

<xsl:template match="*[@class='vcard']"> 
    <rdf:Description> 
     <xsl:attribute name="rdf:about"> 
      <xsl:value-of select="concat('vc:vcard_id', position() - 1)"/> 
     </xsl:attribute> 
     <xsl:if test=".//*[@class='fn']"> 
      <vc:hasName> 
       <xsl:value-of select=".//*[@class='fn']"/> 
      </vc:hasName> 
     </xsl:if> 
     <xsl:if test=".//*[@class='nick']"> 
      <vc:hasNickName> 
       <xsl:value-of select=".//*[@class='nick']"/> 
      </vc:hasNickName> 
     </xsl:if> 
     <xsl:if test=".//*[@class='tel']/*[@class='value']"> 
      <vc:phone> 
       <xsl:value-of select=".//*[@class='tel']/*[@class='value']"/> 
      </vc:phone> 
     </xsl:if> 
    </rdf:Description> 
</xsl:template> 

しかし、代わりに私に次のようになり所望の出力を、与える:この目的を達成するために、私は次のXSLTコードを書きました変換は私に以下の出力を与えます:

<?xml version="1.0" encoding="UTF-8"?><rdf:RDF 
xmlns:vc="http://example.org/vcard#" xmlns:rdf="http://www.w3.org/1999/02/22- 
rdf-syntax-ns#" xmlns:h="http://www.w3.org/1999/xhtml"/> 

今まで私はxslt exclusi xmlをhtmlに変換するためのものです。だから私の推測では、私の間違いはこの仕事のRDFの側面と関係があるということです。私はそれまでに作成されるRDFファイル、つまりターゲットRDFファイル(の名前空間の定義が含まれ

The prefix "rdf" for element "rdf:Description" is not bound. 

:私は最初、私は、次のエラーメッセージが表示されましたXSLT変換を実行しようとした

エラーメッセージが表示されなくなりました。 しかし、変換の出力にはほとんどデータが含まれていません。 私は何が間違っているのか分かりません。誰かが知っているなら、私は答えに感謝します。

答えて

4

命令:

<xsl:apply-templates select="*[@class='vcard']"/> 

子供「のvCard」の値を持つclass属性を持つ現在のノードのを探しています。現在のノードはルート/ノード(その唯一の子がルートhtml要素です)であるため、そのような子は見つかりません。

任意のレベルで、文書全体では、このような属性を持つ要素を探します
<xsl:apply-templates select="//*[@class='vcard']"/> 

:それを変更してみてください。

+0

ありがとうございました!それがそれを解決しました。 – Tommy

関連する問題