特定のテンプレートが存在するのに、なぜすべてのテキストが印刷されるのかわからない

ロッド

listitems ノードに固有のテンプレート要素があります。

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="text"/>

  <xsl:template match="listitems">
    <xsl:value-of select="@status" />
  </xsl:template>

</xsl:stylesheet>

xml

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="callvsapply.xslt"?>
<!-- sample XML snippet -->
<xml>
  <foo status="No">You are here.</foo>
  <bar status="Yes">Hello Bar!</bar>
  <baz status="No">Hello Baz!</baz>
  <listitems status="Yes" id="13" />
  <listitems status="No" id="12" />
</xml>

結果

  You are here.
  Hello Bar!
  Hello Baz!
  Yes
  No

すべてのテキストが印刷されるのはなぜですか? 私はイエスとノーだけを期待していました。

JLishe

XSLT には「組み込みテンプレート ルール」という概念があります。これは、テンプレートが適用されている現在のノードに関連するテンプレートが定義されていない場合に使用されるテンプレートです。

それらは次のようになります。

<xsl:template match="*|/">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="text()|@*">
  <xsl:value-of select="."/>
</xsl:template>

<xsl:template match="processing-instruction()|comment()"/>

これらが要約すると、次のとおりです。

  • 現在のノードが要素またはルート ノードの場合、すべての子ノードにテンプレートを適用します。
  • 現在のノードがテキスト ノードまたは属性ノードの場合、その値を出力に配置します。
  • 現在のノードが処理命令またはコメントの場合は、何もしません。

したがって、基本的に、テンプレートがまったく指定されていない場合の XSLT のデフォルトの動作は、ドキュメントを上から下にたどり、途中のすべてのテキスト ノードの値を出力することです。それがあなたが見ているものです.XSLTは、途中で遭遇したすべてのテキストを出力しています。

あなたのケースでこれを解決するには、2 つの基本的なアプローチがあります。

最初のアプローチ: ルート ノード (またはドキュメント要素) で処理をインターセプトし、そこから処理したいノードを直接ターゲットにします。

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:output method="text"/>

  <xsl:template match="/*">
    <xsl:apply-templates select="listitems" />
  </xsl:template>

  <xsl:template match="listitems">
    <xsl:value-of select="@status" />
  </xsl:template>

</xsl:stylesheet>

2 番目のアプローチ: テキスト ノードの組み込み処理をオーバーライドして、デフォルトで値が出力に送信されないようにします。

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:output method="text"/>

  <xsl:template match="listitems">
    <xsl:value-of select="@status" />
  </xsl:template>

  <xsl:template match="text()" />

</xsl:stylesheet>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ListViewアイテムテンプレートにボタンが表示されるのにテキストが表示されないのはなぜですか?

分類Dev

forループの後の印刷ステートメントが印刷されないのはなぜですか?

分類Dev

パンダを使用してWebサイトからテーブルをスクレイプすると、中央の列がスキップされ、最初の2つと最後の2つだけが印刷されるのはなぜですか。

分類Dev

更新時に指定されていないのに、すべてのコンテキストが実行されるのはなぜですか?

分類Dev

なぜその部分的なテンプレートの特殊化が許可されているのですか?

分類Dev

テンプレートエイリアスの特殊化が、それが参照されるコンテキストに依存するのはなぜですか?

分類Dev

再帰関数がテンプレートに1回だけ印刷されるのはなぜですか?

分類Dev

テキストフォームがわずかにずれているのはなぜですか?

分類Dev

LotusScriptエージェントからメモが作成されて送信され、リッチテキストがプレーンに変換されてドキュメントリンクが削除されるのはなぜですか?

分類Dev

Facebookボタンの横のテキストが2行に分割されているのはなぜですか?

分類Dev

SerialPortからのテキストがいくつかの部分に分割されるのはなぜですか?

分類Dev

PDFをプレーンテキストに変換するのが難しいのはなぜですか?

分類Dev

&&条件が満たされていないにもかかわらず、ifステートメントが出力を返すのはなぜですか?

分類Dev

インスタンスメソッドが静的コンテキストで使用されている場合、javacが「エラー:クラスのメソッドを特定のタイプに適用できない」と出力するのはなぜですか?

分類Dev

Webページに表示されている一部のテキストがHTMLソースで見つからないのはなぜですか?

分類Dev

テストアセンブリパターンを配置しているにもかかわらず、テストアセンブリがVSTS Azureビルドパイプラインでフィルタリングされないのはなぜですか?

分類Dev

すべてのトップレベルキーにすべてのセカンドレベルキーがあるわけではないネストされた辞書を解凍するにはどうすればよいですか?

分類Dev

React-Bootstrap:テキストが状態変数内に格納されている場合、アラートコンポーネントのテキストのレンダリングが異なるのはなぜですか?

分類Dev

TensorFlow LSTM:テストの精度が低くなるのに、トレーニングが行われないのはなぜですか?

分類Dev

ラベルにすべてのテキストが表示されないのはなぜですか?

分類Dev

テキストがあると予想される場所にスクレイプ印刷が\ t \ n \ nあるのはなぜですか?

分類Dev

テンプレート[ユーザー/リスト]の解決中にエラーが発生しました。テンプレートが存在しないか、構成されているテンプレートリゾルバーからアクセスできない可能性があります

分類Dev

テンプレート[/]の解決中にエラーが発生しました。テンプレートが存在しないか、構成されているどのテンプレートリゾルバーからもアクセスできない可能性があります

分類Dev

すべての有効なテンプレートがインスタンス化されていますか?

分類Dev

テンプレートのテンプレートが使用されているにもかかわらず、「クラステンプレートの使用にはテンプレート引数リストが必要です」エラー、したがってテンプレートクラスが必要です

分類Dev

すべての条件が true であるのに、この IF ステートメントが false と評価されるのはなぜですか?

分類Dev

ワンドを使用してPDFから画像jpgを抽出すると、テキストの上に黒い背景が表示されるのはなぜですか

分類Dev

常にtrueであるにもかかわらず、Javaのifステートメントでエラーが発行されるのはなぜですか?

分類Dev

JavaFX-アプリケーション:Eclipseではすべてのダイアログが表示されているのに、エクスポートされたjarファイルからメインステージのみが表示されます。なぜこの違いがあるのですか?

Related 関連記事

  1. 1

    ListViewアイテムテンプレートにボタンが表示されるのにテキストが表示されないのはなぜですか?

  2. 2

    forループの後の印刷ステートメントが印刷されないのはなぜですか?

  3. 3

    パンダを使用してWebサイトからテーブルをスクレイプすると、中央の列がスキップされ、最初の2つと最後の2つだけが印刷されるのはなぜですか。

  4. 4

    更新時に指定されていないのに、すべてのコンテキストが実行されるのはなぜですか?

  5. 5

    なぜその部分的なテンプレートの特殊化が許可されているのですか?

  6. 6

    テンプレートエイリアスの特殊化が、それが参照されるコンテキストに依存するのはなぜですか?

  7. 7

    再帰関数がテンプレートに1回だけ印刷されるのはなぜですか?

  8. 8

    テキストフォームがわずかにずれているのはなぜですか?

  9. 9

    LotusScriptエージェントからメモが作成されて送信され、リッチテキストがプレーンに変換されてドキュメントリンクが削除されるのはなぜですか?

  10. 10

    Facebookボタンの横のテキストが2行に分割されているのはなぜですか?

  11. 11

    SerialPortからのテキストがいくつかの部分に分割されるのはなぜですか?

  12. 12

    PDFをプレーンテキストに変換するのが難しいのはなぜですか?

  13. 13

    &&条件が満たされていないにもかかわらず、ifステートメントが出力を返すのはなぜですか?

  14. 14

    インスタンスメソッドが静的コンテキストで使用されている場合、javacが「エラー:クラスのメソッドを特定のタイプに適用できない」と出力するのはなぜですか?

  15. 15

    Webページに表示されている一部のテキストがHTMLソースで見つからないのはなぜですか?

  16. 16

    テストアセンブリパターンを配置しているにもかかわらず、テストアセンブリがVSTS Azureビルドパイプラインでフィルタリングされないのはなぜですか?

  17. 17

    すべてのトップレベルキーにすべてのセカンドレベルキーがあるわけではないネストされた辞書を解凍するにはどうすればよいですか?

  18. 18

    React-Bootstrap:テキストが状態変数内に格納されている場合、アラートコンポーネントのテキストのレンダリングが異なるのはなぜですか?

  19. 19

    TensorFlow LSTM:テストの精度が低くなるのに、トレーニングが行われないのはなぜですか?

  20. 20

    ラベルにすべてのテキストが表示されないのはなぜですか?

  21. 21

    テキストがあると予想される場所にスクレイプ印刷が\ t \ n \ nあるのはなぜですか?

  22. 22

    テンプレート[ユーザー/リスト]の解決中にエラーが発生しました。テンプレートが存在しないか、構成されているテンプレートリゾルバーからアクセスできない可能性があります

  23. 23

    テンプレート[/]の解決中にエラーが発生しました。テンプレートが存在しないか、構成されているどのテンプレートリゾルバーからもアクセスできない可能性があります

  24. 24

    すべての有効なテンプレートがインスタンス化されていますか?

  25. 25

    テンプレートのテンプレートが使用されているにもかかわらず、「クラステンプレートの使用にはテンプレート引数リストが必要です」エラー、したがってテンプレートクラスが必要です

  26. 26

    すべての条件が true であるのに、この IF ステートメントが false と評価されるのはなぜですか?

  27. 27

    ワンドを使用してPDFから画像jpgを抽出すると、テキストの上に黒い背景が表示されるのはなぜですか

  28. 28

    常にtrueであるにもかかわらず、Javaのifステートメントでエラーが発行されるのはなぜですか?

  29. 29

    JavaFX-アプリケーション:Eclipseではすべてのダイアログが表示されているのに、エクスポートされたjarファイルからメインステージのみが表示されます。なぜこの違いがあるのですか?

ホットタグ

アーカイブ