2013-01-01から1年間の記事一覧

CALSのテーブルとオーサリングツール

たまたまお客様から問い合わせがあってわかったのですが、DITAのテーブルの処理はオーサリングツールや出力によって様々なようです. 試しにサンプルを作ってみました.次のような少々変なテーブルのデータです. <concept id="concept_ab01c"> <title>Table colsep/rowsep test</title> <shortdesc/> </shortdesc/></concept>

プログラミング言語とXPath(6) Scala

では期待のScalaはどうでしょうか?実はScalaにできることは、おおよそ以下のようなプログラムで示されることです. import scala.xml.XML import scala.xml.Elem object Main { def main(args: Array[String]) { val root = XML.loadFile("MusicLibrary.xml…

プログラミング言語とXPath(5) F#

.NETのVBをやったのでF#がどうなのか試しておきます.最初にXPathSelectElementsを使う例です.これは簡単でVBと同じです. open System.Xml.XPath open System.Xml.Linq [<EntryPoint>] let main argv = let xd = XDocument.Load("MusicLibrary.xml") (* XPathSelectEle</entrypoint>…

プログラミング言語とXPath(4)

.NETでLINQのXDocumentに対してXPathSelectElementsにXPath式を指定してノードを選択する例を示します.非常に単純でドキュメントノードに対してXPathSelectElementsを適用するだけです. Imports System.Xml.Linq Imports System.Xml.XPath.Extensions Modu…

XSLT3.0への道(17) XPath3.0のパワー

もしこれを読まれたあなたがDimitre Novatchevさんをご存知だったら相当のXSLTに憧憬が深い勉強家じゃないかと思います.Dimitre Novatchevさんは、XSLT/XPathの世界ではとても有名な「オタク」です.すごいプログラムばっかり書いています.私もWEBを探しに…

プログラミング言語とXPath(3)

.NETでXPathを使うには、LINQ以前のSystem.Xml.XPath.XPathNavigatorクラスを使う方法と、LINQのXDocument, XElementに対してXPathSelectElementsなどのメソッドを使用する方法の二つがあるようです. XPathNavigatorは言ってみれば、PCのワープロやエディタ…

XSLT3.0への道(16) 閑話休題 Exelt

ほったらかしにしていて閑話休題もないですが、 http://blogs.yahoo.co.jp/tnakita/13569767.html で紹介した.Exeltの開発が進んでいるようです. A distributed, streaming XSLT 3.0 processor .Net Exelt http://www.exselt.net/ 7月22日にprivate betaの…

プログラミング言語とXPath(2)

最初はJavaです.JavaでXPathを使用する例はネット上で豊富に存在します.私が懐かしく見させていただいたのは、IBM developerWorks Japanの以下の記事です. Java XPath API Java プログラムから XML をクエリーする http://www.ibm.com/developerworks/jp/…

Lightweight DITA(軽量なDITA)

DITAをお使いのお客様から必ず出てくるお話のひとつに次のようなものがあります. 「エディタで表示される要素や属性の数が多すぎます.必要なものだけ表示されるようにできませんか?」 で、何の話かと言いますとXMLエディタで表示数を減らす加工(細工)が…

プログラミング言語とXPath (1)

Office2003はもうすぐサポート終了になるそうです.私のPCにはOffice2013も入っていますがOffice2003もまだちゃんと入っています.Office2003の例えばWord2003はMicrosoftにとって画期的な製品でした.何故かというとそれまでのバイナリーのネイティブフォー…

XMLファイルをコピーする(6)

最後の例は本命(?)のScalaです.XMLのロードとセーブが簡単になる分ぐっとコードが短くなります. import scala.xml.XML import scala.xml.Node import scala.xml.NodeSeq import scala.xml.Elem import scala.xml.Text object Main { def main(args: Arr…

XMLファイルをコピーする(5)

F#は2002年からMicrosoft ResearchのDon Symeらによって開発されたマルチパラダイム言語です.Visual Studioに載ったのは2010からとまだ新しいです.私はまったくの初心者ですが、書いてみるとけっこう面白いです.Amazonで本を探してみると、F#はScalaより…

XMLファイルをコピーする(4)

次は同じVisual Basicでも、LINQ(統合言語クエリ, Language INtegrated Query)for XMLを使ってみます.出力も「直に」タグを書き込んでいては芸がないので、XmlWriterクラスを使うようにします. Imports System.IO Imports System.Xml Imports System.Xml…

XMLファイルをコピーする(3)

こんどは.NETのSystem.Xml.XmlReaderを使ってVisual Basicでやってみます.プログラムは以下のようなものです.(あいかわらずエラー処理は全然やってありません.) Imports System.IO Imports System.Xml Module Main Sub Main() Dim xr = CreateXmlReader…

XMLファイルをコピーする(2)

最初はJava + SAX (Simple API for XML)でやってみます.プログラムは以下のようなものです.(エラー処理は全然やってありません.) import org.xml.sax.*; import org.xml.sax.helpers.*; import java.io.*; public class Main { public static void mai…

XMLファイルをコピーする(1)

復習と勉強がてらにXMLファイルをコピーするという単純な処理を様々な言語でどのように実現できるかやってみました. 前提として、XMLファイルはコメントや処理命令を含まないごく単純なものとします.ネームスペースも使用しません.今回使ったのはBeginnin…

imageもしくはfigの特殊化⇒DITAにないフロート画像

Googleで"マニュアル"、"PDF"、"ダウンロード"とサーチしてみると、一番最初にニコンのデジカメの取扱説明書がヒットします.このPDFは特に転載などの制限条項がありませんでしたので少し参考になるページを出させていただきました. デジタル一眼レフカメラ…

Using Scala as a Replacement for XSLT?

さまざまなプログラミング言語がXMLを取り扱えるようになりました.例えばScalaやVisual BasicではXMLを直接プログラムの中に変数として書けるところまで来てしまいました.ところでこのように便利になってきたプログラミング言語でどこまでXMLの処理が出来…

self軸

次のような<p>要素に正確にマッチするテンプレートを書きなさいといわれたらどうされますか? <p>~</p> つまり、直前がという処理命令で、直後がという処理命令という要素にマッチする条件です.間にはホワイトスペースは入りません. 実は不勉強ながら最初はどうした</p>…

XMLとVisual Basic

今仕事で使うIDE(統合開発環境)は何かというとoXygen XML Editorです.エディタですが、XSLTスタイルシートをコーディングして、IDE上からANTを起動してFormatterでPDFをつくるところまで一発でできてしまいます.で同業の女房は何を使うかと言えばC++なの…

XMLとスタイル (2)

もう少し典型的ではないかと思われる例を見つけました.PDFですが複製、転載禁止とありますのでコピーを載せるという訳にはゆきません.もしよろしければ以下からダウンロードして見ていただければと思います.日本のリコーのデジカメのマニュアルです. GR …

XMLとスタイル (1)

最近とみに感じるんですが、「XMLはコンテンツをオーサリングし、スタイルは様々なメディアに出力するときにスタイルシートで付加するんだ」というのが従来の典型的な考え方だったと思います.でもこのような考え方は実際に作られている出版物の実体に合致し…

最近のXMLの本

昔から会社でXMLの仕事に移動や配属が決まると、きまって購入してくれる本がこれでした.いわゆるXMLの赤本というのです.出たのは2001年で相当古いのですが、みんなこれを読んで勉強したものでした. http://www.amazon.co.jp/%E6%A8%99%E6%BA%96XML%E5%AE%…

idの重複(3)

話しのついでにtopicの参照の重複について書いておきます.(もしかしたら以前書いたかもしれません)いろいろなお客様に話を伺っても、ひとつの文書の中で同じtopicを二回以上使用する(マップから参照する)ということは「絶対にない」と言われてきました.…

idの重複(2)

DITA-OTでマージされた中間ファイルを作ると、bookmapにつながっていたtopicがすべて結合された状態になります.階層的には <dita-merge> <bookmap> <topicref href="#unique1"/> <topicref href="#unique2"/> <topicref href="#unique3"/> <topicref href="#unique4"/> </bookmap> <topic id="unique1">~</topic> <topic id="unique2">~</topic> <topic id="unique3">~</topic></dita-merge>

idの重複

ある日スタイルシートをお客様からもらったデータで動かしていました.うまくXSL-FOが出来てFormatterのステップに行ってくれたのですが、やたらエラーメッセージが表示され組版が時間がかかります.なんとか終了したのですがid重複のエラーが3000行も出てい…

.xprにはまる.

.xprというのはXMLエディタoXygenのプロジェクトファイルです.どのようなときに使うかというと、 1.XMLファイルをオーサリングして、スキーマに基づいて検証する. 2.XSLTスタイルシートをコーディングして、文法の間違いがないか検証する. という用途…

Redmineの孤独

お客様とプロジェクトを進める上でExcelは手軽で必須のもののようです. 昨年やった開発のプロジェクトでは、基本的にすべての仕様に関する質問と回答はExcelワークシートに記入してメールに添付してやりとりというのものでした.最初のファイルサイズが小さ…

テーブルのタイトルに&quot;(Continued)&quot;と出す. (2)

以前テーブルの表題に"(Continued)"と出すのがまともにやると難しいと書きました(http://blogs.yahoo.co.jp/tnakita/13743985.html)が、やはりお客様からこのような要望は寄せられます.FOだけのサンプルですが、すこしまともに出す例を作ったので紹介しま…

DITA⇒よくわかりません(その5)

keyrefはまだ変種があります.私にはどうにもわからなかった機能です.これは@hrefをスキーマ上で持たない要素(例えばkeyword、term、ph)に対して、@hrefが定義されているkeydefをkeyrefできるのです.その結果、参照元の要素にリンクが生成されるとされて…