2015年03月01日

Xalanを使ってHTML5のdoctypeを出力

Xalanを使ってHTML5のdoctypeを出力する方法を調べました。

最初に、XSLTでHTML5のdoctypeを出力する方法を調べてみました。すると以下が見つかりました。
Valid HTML5 doctype with XSLT
これによると、XSLTは公式にはHTML5をサポートしていないそうです。ただ、このページには完全ではないですが、似たような出力を出す方法がいくつかありました。そのため、このページをもとに試してみました。

また、Xalanの出力をインデント有りにしたかったので、以下を参考にしました。
Configuring serialization output properties (http://xalan.apache.org)

上記の2つを参考に、以下のXSLTファイルを作成して、Xalanで変換するとエラーになり、出力に失敗します。
<?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"
encoding="UTF-8"
indent="yes"
xalan:indent-amount="2"/>
 ・・・
(以下省略)

エラーは以下
D:\test>java org.apache.xalan.xslt.Process -in sc.xml -out sc.html -xsl mydocboo
k.xsl -param dateNow '2015-3-1'
[Fatal Error] mydocbook.xsl:7:40: The prefix "xalan" for attribute "xalan:indent
-amount" associated with an element type "xsl:output" is not bound.
file:///D:/test/mydocbook.xsl; 行 #7; 桁 #40; org.xml.sax.SAXParseException; sys
temId: file:///D:/test/mydocbook.xsl; lineNumber: 7; columnNumber: 40; The prefi
x "xalan" for attribute "xalan:indent-amount" associated with an element type "x
sl:output" is not bound.

java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.setParameter(Transformer
Impl.java:1547)
at org.apache.xalan.transformer.TransformerImpl.setParameter(Transformer
Impl.java:1595)
at org.apache.xalan.xslt.Process.main(Process.java:842)
Exception in thread "main" java.lang.RuntimeException
at org.apache.xalan.xslt.Process.doExit(Process.java:1155)
at org.apache.xalan.xslt.Process.main(Process.java:1128)


エラーメッセージを見ると、 "xalan:indent-amount" の部分に何か問題があるようです。
そのため、その部分を中心にいろいろと試してみました。するとXalan?のインデント指定では、以下の部分の、xmlns:xalan=・・・が無いとエラーになることがわかりました。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan">


そのため、XSLTを以下のように修正したらエラーが起こらなくなりました。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan">>
<xsl:output method="html"
encoding="UTF-8"
indent="yes"
xalan:indent-amount="2"/>
 ・・・
(以下省略)


出力は以下のようになります。xmlns:xalan・・・ と余分なものがありますがブラウザの表示には影響なく、
HTML5として認識されている?はずです。
<!DOCTYPE html><html xmlns:xalan="http://xml.apache.org/xalan" lang="ja">
<head>
・・・


posted by jun1 at 16:43| Comment(0) | TrackBack(0) | XML

2015年02月08日

DocBook関係の情報

自分のホームページのソースは、DocBook形式のXMLで書いています。

最近、新しい項目を追加しようと思いましたが、どのタグを使用すれば良いか分からなかったので、ちょっと調べてみました。また、以前調べたときの情報がまとまっていなかったので、それらも合わせて簡単にまとめてみました。

DocBookの入門情報
DocBookの概要(IBM develperWorks)
Eclipse で DocBook XML を構築するIBM develperWorks)


タグの定義は docbook.orgにあります。
DocBook Publishers: The Definitive Guide (DocBook V5.1b3)
DocBook Publishers: The Definitive Guide (DocBook V5.0)

追記. 上記だと、screenやfilenameタグがありませんでした。そこで、調べてみると以下が見つかりました。これには載っています
DocBook 5.1: The Definitive Guide


DocBookは大量のタグが定義されていて、どれを使用したら良いか分かりづらいところがあります。
そこで、ちょっと古いですが、タグの選択で参考にしたページが以下になります。
Which are the most used DocBook tags actually used by you in Fedora Guides?

上記にFedoraやGNOMEのドキュメントに使われているとありますが、今も使われているなら、それらを調べてみるのも良いかも。

また、以前調べたとき、以下の最終行近くにある「(ソースはこちらです)」のリンク先も参考にさせてもらいました。
DocBook文書を日本語で書く


あと、DocBookは、HTMLだけでなくepubの原稿としても使われています。
オライリー・ジャパンのePUBフォーマットを支える制作システム
EPUB で電子書籍を作成する
DocBook入門: DocBookで各種文書を作成する。


個人的によく使用しているタグは以下になります。
表題など  article、articleinfo
章など  sect1、sect2、sect3、title
段落  para
リンク  ulink
画像  mediaobject、imageobject、imagedata
番号なしリスト  itemizedlist、listitem
番号ありリスト  orderedlist、listitem
テキスト関係  literallayout
画面出力  screen
プログラム文  programlist
テーブル  table、thead、tbody、row、entry
posted by jun1 at 19:10| Comment(0) | TrackBack(0) | XML

2008年04月08日

online XPath evaluator

MDC(Mozilla Developer Center)でXPathについて調べていたら、XMLドキュメントとXPathを入力すると、その結果を表示してくれるサイトを発見。

サイトのURLは以下になります。
http://b-cage.net/code/web/xpath-evaluator.html

続きを読む
posted by jun1 at 23:54| Comment(0) | TrackBack(0) | XML

2008年04月04日

XMLの要素から属性への変換(2)

前回の属性 → 要素の変換結果をXLSTスタイルシートで元の形式に戻す方法

続きを読む
posted by jun1 at 00:59| Comment(0) | TrackBack(0) | XML

2008年04月03日

XMLの属性から要素への変換

前回の逆で、XSLTを使ったXMLの属性を要素へ変換する方法

続きを読む
posted by jun1 at 01:13| Comment(0) | TrackBack(0) | XML

2008年04月02日

XMLの要素から属性への変換

XMLではデータを要素形式か、属性形式で表すことができます。
どちらの形式でも良いのですが、作成済みのXMLファイルで要素から属性、または属性から要素に変換したい場合、XSLTを使用することで変換できます。

続きを読む
posted by jun1 at 00:32| Comment(0) | TrackBack(0) | XML