Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2009-03-18

[][][][][][]IDMSことはじめ:(2)IDMSの生成

IDMSことはじめ:(1)IDMSとは - 名もないテクノ手のつづき。

前回は、スニペットがIDMSというXMLフォーマットであることを説明しました。


IDMSの生成

今回は、Rubyの標準ライブラリであるREXMLを使って、IDMSを生成してみたいと思います。

#! /usr/bin/ruby -Ku

require "rexml/document"

my_str = <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?aid style="50" type="snippet" readerVersion="6.0" featureSet="257" product="6.0(352)" ?>
<?aid SnippetType="PageItem"?>
<Document DOMVersion="6.0" Self="d">
	<Spread Self="ud0">
	</Spread>
</Document>
EOF

my_xml = REXML::Document.new my_str
my_Spread = my_xml.elements["/Document/Spread"]
my_Rectangle = my_Spread.add_element "Rectangle", {"Self"=>"ue5", "StrokeWeight"=>"0.5", "ItemTransform"=>"1 0 0 1 0 -421"}
my_Proerties = my_Rectangle.add_element "Properties"
my_PathGeometry = my_Proerties.add_element "PathGeometry"
my_GeometryPathType = my_PathGeometry.add_element "GeometryPathType", {"PathOpen"=>"false"}
my_PathPointArray = my_GeometryPathType.add_element "PathPointArray"
my_PathPointArray.add_element "PathPointType", {"Anchor"=>"50.25 100.25", "LeftDirection"=>"50.25 100.25", "RightDirection"=>"50.25 100.25"}
my_PathPointArray.add_element "PathPointType", {"Anchor"=>"50.25 299.75", "LeftDirection"=>"50.25 299.75", "RightDirection"=>"50.25 299.75"}
my_PathPointArray.add_element "PathPointType", {"Anchor"=>"199.75 299.75", "LeftDirection"=>"199.75 299.75", "RightDirection"=>"199.75 299.75"}
my_PathPointArray.add_element "PathPointType", {"Anchor"=>"199.75 100.25", "LeftDirection"=>"199.75 100.25", "RightDirection"=>"199.75 100.25"}
print my_xml

正直いって、XMLを手で書くのと手間は変わりません(w

あと、テスト中に気がついたのですけれど、このDOM階層が多少間違っていようと、要素名が間違っていようと、一切エラーはでないようでした。

ただ、ちゃんと図形にならないだけ^^

生成したXMLは、チェックしないといけないです。どうやって? Relax NGスキーマを使って。つづく...か?

参照

REXML API document (ja)

RubyでXML操作