第20回:ボキャブラリ変換のボキャブラリ ~XSLT~
著者:岸 和孝(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> |
▼図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 ボキャブラリ変換の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) 探検 XMLボキャブラリの世界