XMLドキュメントの視覚化

多くの人にとって、xmlが情報を保存および送信するためのかなり便利な方法であることは秘密ではないと思います。 何度も、私は文学で将来、xmlがhtmlを置き換えるべきであるという声明に出くわしました。xhtmlの出現はこれを確認するものです。 しかし、ニュアンスがあります。 すべてのブラウザはhtmlドキュメントの表示方法を知っていますが、xmlドキュメントの表示方法を知っているブラウザはありません。 これは主に、xmlドキュメントを作成するときにタグを入力できるという事実によるものです。 いわゆる「xmlドキュメントの変換テーブル」について簡単に説明します(実際、これは非常に大きなトピックです)。
多くの人がおそらくそれらに精通していると思いますが、これが誰かに役立つことを願っていますが、練習に対する私の愛を考えて、非常に簡単な例ですべてを見せたいです


何がありますか


単純なxmlドキュメントを考えてみましょう。
  1. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  2. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  3. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  4. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  5. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  6. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  7. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  8. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  9. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  10. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  11. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  12. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  13. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  14. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  15. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  16. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  17. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  18. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  19. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  20. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  21. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>
  22. <?xml version="1.0" encoding="utf-8"?> <document> <header> Xml-</header> <items> <item id="1"> <name>Habrahabr.ru</name> <description> . . </description> </item> <item id="2"> <name>Bash.org.ru</name> <description> . , , . </description> </item> </items> </document>

ブラウザで表示しようとすると、次のようなものが表示されます。


このドキュメントの内容を視覚化する方法はいくつかあります。
通常のスタイルシート(cssファイル)または変換テーブルをそれに接続できます。
変換テーブルは、特定のルールに従って発行され、拡張子が.xsltのxmlドキュメントです。

xml-documentに含まれる情報を表示する必要があるとします。これのために、変換テーブルを作成します(ファイルはstyle.xsltと呼ばれます)。
  1. <?xml version = "1.0" encoding = "utf-8"?>
  2. <xsl:スタイルシートバージョン= "1.0"
  3. xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  4. xmlns:msxsl = "urn:schemas-microsoft-com:xslt"
  5. exclude-result-prefixes = "msxsl">
  6. <xsl:template match = "document">
  7. <html>
  8. <head> <title> <xsl:value-of select = "header" /> </ title> </ head>
  9. <body> <xsl:apply-templates select = "items" /> </ body>
  10. </ html>
  11. </ xsl:template>
  12. <xsl:template match = "items">
  13. <ul> <xsl:apply-templates select = "item" /> </ ul>
  14. </ xsl:template>
  15. <xsl:template match = "item">
  16. <li> <a>
  17. <xsl:属性名= "href">
  18. http:// <xsl:value-of select = "name" />
  19. </ xsl:属性>
  20. <xsl:value-of select = "name" />
  21. </a>-<xsl:value-of select = "description" />
  22. <li> </ xsl:テンプレート>
  23. </ xsl:スタイルシート>


次のように、変換テーブルを(もちろん元のxml-documentに)接続できます。
<?xml version = "1.0" encoding = "utf-8"?>
<?xml-stylesheet type = "text / xsl" href = "style.xslt"?>
その結果、ブラウザーで同じファイルを開くと、次のように表示されます。



一言で言えば、それがどのように機能するか


変換テーブルには、ドキュメント、アイテム、アイテムの3つのテンプレートが記述されています。 テンプレートでxsl:apply-templates要素が検出されると、select式を満たすすべての要素を処理した結果として発生するものに置き換えられます(タグ名を指定しましたが、非常に複雑な構造が存在する場合があります)。 同様に、タグ値(xsl:タグの値)およびタグの属性(xsl:属性タグ)が挿入されます。

ドキュメントテンプレートは、htmlページ(html、head、bodyタグ)の基礎を形成し、ページテンプレートと、itemsテンプレートによって形成される要素のリストを挿入します(list要素は、itemsテンプレートによって形成されます)。

すべての変換はクライアント側で行われます。

これは、変換テーブルテクノロジーが提供できるもののほんの一部です。 Visual Studioには、生成されたhtmlの表示など、それらを操作するための便利なインターフェイスがあります。

Source: https://habr.com/ru/post/J43356/


All Articles