2017-10-22 13 views
-2

IはTEI P5有効なXMLファイルがあると私はすでに正常ファイルを解析するサクソン-PE 9を使用します。TEIヘッダ - (SAXON)を解析できない

しかし、私は 'biblStruct/monogr /インプリント/日付' の値を取得することができません。

限り私が得たとして - パーサは「sourceDesc」ノードを認識していないが、それは同じ階層レベルにある「titleStmt」を、認識しません。 誰にも分かりますが、私の問題の解決策は何ですか?具体的に

<xsl:template match="tei:titleStmt"> 

は、作業を行いますが、

<xsl:template match="tei:biblStruct"> 

または

<xsl:template match="tei:biblStruct/tei:monogr/tei:imprint/tei:date"> 

はしていません。つまり、出力はヌルで、<xsl:message>Parser successfully got here.</xsl:message>はまったくトリガーされません。これは、XMLファイルのヘッダーになり

<?xml version="1.0" encoding="UTF-8"?> 
<TEI xmlns="http://www.tei-c.org/ns/1.0"> 
    <teiHeader> 
     <fileDesc> 
      <titleStmt> 
       <title>Zaveza</title> 
       <title>Revija</title> 
       <title>Elektronska </title> 
      </titleStmt> 
      <editionStmt> 
       <edition>0.1</edition> 
      </editionStmt> 
      <extent> KB XML </extent> 
      <publicationStmt> 
       <publisher> 
        <address> 
        </address> 
       </publisher> 
      </publicationStmt> 
      <sourceDesc> 
       <biblStruct> 
        <monogr> 
         <title>Zaveza</title> 
         <imprint> 
          <biblScope type="issue">10</biblScope> 
          <biblScope type="vol">XXVI</biblScope> 
          <biblScope>številka 4, december 2016</biblScope> 
          <date when="2016-12">2016</date> 
         </imprint> 
        </monogr> 
       </biblStruct> 
      </sourceDesc> 
     </fileDesc> 
    </teiHeader> 
-- 
</TEI> 

そして、これは、XLSの一部です:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" 
       xmlns:fo="http://www.w3.org/1999/XSL/Format" 
       xmlns:html="http://www.w3.org/1999/xhtml" 

       xmlns:rng="http://relaxng.org/ns/structure/1.0" 
       xmlns:tei="http://www.tei-c.org/ns/1.0" 
       xmlns:teix="http://www.tei-c.org/ns/Examples" 

       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       version="2.0" 
       exclude-result-prefixes="a fo rng tei teix"> 

    <doc xmlns="http://www.oxygenxml.com/ns/doc/xsl"> 
     <desc>Process element teiHeader</desc> 
    </doc> 
    <xsl:template match="tei:date"> 
     <xsl:message>Parser successfully got here.</xsl:message> 
    </xsl:template> 

</xsl:stylesheet> 
+0

ようこそスタックオーバーフロー。問題をよりよく説明すると、より良い回答が得られます。あなたが表示しているコードには、問題があると言っている日付要素を取得しようとするものは含まれていません。あなたの質問は、あなたが得ているエラーメッセージや結果、そしてその結果があなたが期待していたものとどう違うかを教えてくれません。助けをより簡単にする。アドバイスについては、[SO help files](http://stackoverflow.com/help/how-to-ask)を参照してください。 –

+1

要素名が正しい名前空間にバインドされた接頭辞によって修飾されなければならないという基本原則を理解していることを知るには、十分なコードを示しました。それにもかかわらず、機能していない欠落しているコードが表示された場合は、まず一貫して名前空間接頭辞を使用していて、それを忘れていないことを確認します。 –

+0

ありがとう、@ C.M。Sperberg-McQueenとMichaelKayの質問を再定義しようとしましたが、問題を特定しました(出力なし)。 –

答えて

1

私の推測では、あなたの質問改定与え、あなたは関連するノード上xsl:apply-templatesを呼び出すことはありませんので、テンプレートルールがアクティブ化されることはありませんということです。あなたは(xsl:apply-templatesselect式の)処理に関連するノードを選択する必要があり、およびテンプレートルールは、それらのノードに一致する(と最優先/優先度のテンプレートルールでなければなりません:テンプレートルールは任意の効果を持つためには、2つの条件が満たされなければなりませんこれらのノード)。

+0

その間、私は同じ結論に達しました - テンプレートは決して活性化されませんでした。 >これらのノードの優先度/優先度が最も高いテンプレートのルールは です。これは私の問題だったと思います。実際のTEIスタイルシートはかなり長く、私はそれを通して自分の道を見つけることができませんでした。 新しい要素を作成してatteptを作成し、必要な情報を 'tei:date'要素から取り出したところです。 –

1

は、あなたが提供する入力とXSLTスタイルシートを考えると、私は複製することができませんあなたの問題。あなたが提供するスタイルシートは、(入力で整形式エラーが固定されており、xsl:stylesheet要素の終了タグが提供された後)に示す入力で実行したときに出力を生成し、そしてtei:dateのテンプレートは、実際のプロセスに日付要素を行います入力にこれは、要素の内容が出力に現れないという事実から出力に容易に見られます。つまり、表示されているテンプレートが実行するように書かれています。

あなたが示したスタイルシートと入力は実際にあなたが使用しているものです。この場合、XML以外の入力を受けてエラーメッセージが表示されるはずです(XSLTの悪いコメントのためにショー)、またはあなたは問題を取り除く方法でスタイルシートを省略しました。後者の場合、問題は削除した資料にあることがわかりました。それは何かです。

+0

ありがとう!実際には、私はテンプレートを呼び出すことなく、他の方法で試しました(私はまだできませんでした)。 –

関連する問題