2

私の XML ファイルには、印刷されたドキュメントの物理的なレイアウトを表す注釈があり、SVG 形式で描画された単純なグリッドを使用して視覚化したいと考えています。

問題の文書は、以下に例示する一連の要素を使用して記述されています。まず、area-model要素は、ドキュメントの幅と高さ、およびドキュメントを縦 (1 行) と横 (3 列) に分割する方法を定義します。

列と行は、hspacing および vspacing 属性を使用して定義されます。これらの値は、幅と高さの属性のパーセンテージです。

area-model要素で定義された初期レイアウトは、レイアウトの物理的特性に関連する同様の属性を持つネストされたサブエリア要素を使用して作成されます。この場合、最初の列には合計 9 つの行があります。location 属性は、サブエリアが配置されている親要素内の場所を記述します。この例では、サブエリアは最初の列にあります。

<area-model>
  <area-root id="layout" cols="3" rows="1" hspacing="25 25 50" vspacing="100" width="404mm" height="210mm" />
    <sub-area id="column-1" location="col-1" cols="1" rows="9" hspacing="100" vspacing="2 8 9 3 3 10 22 39 4" width="101mm" height="210mm">
    </sub-area>
  </area-root>
</area-model>

予想される結果は、Inkscape を使用して作成した SVG から、次の行に沿ったものになります。

<svg>
 <g id="layout">
   <rect y="842" x="0" height="210" width="404" id="area-root" style="fill:none;stroke:#000000;stroke-width:1"/>
   <rect y="842" x="0" height="210" width="101" id="area-root-col-1" style="fill:none;stroke:#000000;stroke-width:1"/>
   <rect y="842" x="101" height="210" width="101" id="area-root-col-2" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-1" d="m 0.50493076,847.86029 99.99013924,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-2" d="m 0.50243229,869.8569 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-3" d="m 0.50243229,888.85128 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-4" d="m 0.50243229,894.8495 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-5" d="m 0.50243229,900.84772 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-6" d="m 0.50243229,921.8415 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-7" d="m 0.50243229,963.82907 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
   <path id="column-1-row-8" d="m 0.50243229,1045.8048 99.99513771,0" style="fill:none;stroke:#000000;stroke-width:1"/>
</g>
</svg>

私の質問は、XSLT を使用して XML を SVG に変換する方法です。

私の場合、最大の課題は、サブエリア要素に必要な寸法 (配置、幅、高さ) を計算する手段を考案して、エリアルート要素で定義された列または行に正しく配置することです。

一方、上記の SVG のpath要素は、XML に格納されている情報を反映している限り、SVG の重複するrect要素に置き換えることができます。基本的に、必要なのは XML ファイルの視覚的な表現だけです。

よろしくお願いします!さらに説明が必要な場合はお知らせください。

4

1 に答える 1