XML技術
HOME  >  XML技術  >  探検 XMLボキャブラリの世界 第20回

探検 XMLボキャブラリの世界 第20回

第20回:ボキャブラリ変換のボキャブラリ ~XSLT~

2008年5月26日 更新
著者:岸 和孝(JAGAT客員研究員)

全文については,Printers Circle(2008年 2月号)をご覧ください。

▼図1 XML文書

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE CARD [
<!ELEMENT CARD      (NAME,COMPANY,LOGO?) >
<!ELEMENT NAME      (#PCDATA) >
<!ELEMENT COMPANY   (#PCDATA) >
<!ELEMENT LOGO      EMPTY >
<!ATTLIST LOGO HREF  CDATA  #REQUIRED >
]>
<CARD>
  <NAME>桃 太郎</NAME>
  <COMPANY>鬼が島商店</COMPANY>
  <LOGO HREF="momo.jpg"/>

</CARD>
注:DSSSLではこの文書はSGML構文に書き換えるものとします。

▼図2 変換結果としてのHTML文書

<HTML>
 <BODY>
  <P>桃 太郎</P>
  <P>鬼が島商店</P>
  <IMG SRC="momo.jpg"/>
 </BODY>
</HTML>

▼図3 ボキャブラリ変換のXSLTスタイルシート

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
  <HTML>
    <BODY>
      <P><xsl:value-of select="CARD/NAME" /></P>
      <P><xsl:value-of select="CARD/COMPANY" /></P>
      <IMG SRC="{CARD/LOGO/@HREF}"/>
    </BODY>
  </HTML>

</xsl:template>
</xsl:stylesheet>

▼図4 文書インスタンス

<?xml version="1.0"?>
<名簿>
  <名刺>
    <名前><姓>金</姓><名>太郎</名></名前>
    <会社名>金時茶屋</会社名>
    <住所>箱根足柄山</住所>
    <メール>kintaro@kintoki.com</メール>
    <ロゴ 画像="kintaro.png" />
  </名刺>
  <名刺>
    <名前><姓>桃</姓><名>太郎</名></名前>
    <会社名>鬼が島</会社名>
    <住所>瀬戸内鬼が島</住所>
    <メール>momotaro@onigashima.co.jp</メール>
    <ロゴ 画像="momotaro.png" />
  </名刺>

</名簿>
注:このXSLTスタイルシートの働きは,XTで確認しました。

▼図4 ボキャブラリ変換のDSSSLスタイルシート

<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">
(declare-flow-object-class element 
                    "UNREGISTERED::James Clark//Flow Object Class::element")
(declare-flow-object-class empty-element 
                    "UNREGISTERED::James Clark//Flow Object Class::empty-element")
(element (CARD) (make sequence 
      (make element gi: "HTML" 
        (make element gi: "BODY" (process-children) ) ) ) )
(element (CARD NAME) 
      (make sequence 
        (make element gi: "P" ) ) )
(element (CARD COMPANY) 
      (make sequence 
        (make element gi: "P" ) ) )
(element (CARD LOGO) 
      (make sequence 
        (make empty-element 
                gi: "IMG" 
                attributes: (list (list "SRC" (attribute-string "HREF") ) ) ) ) )
社団法人日本印刷技術協会(JAGAT)
PrintersCircle PrintersCircle 2008年2月号より転載
探検 XMLボキャブラリの世界

▲このページのTOPへ

  • XMLとは?IT初心者でもすぐわかるXML超入門
  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド