在我的 XML 文件中,我有表示打印文档的物理布局的注释,我想使用以 SVG 格式绘制的简单网格将其可视化。
所讨论的文档是使用一组元素来描述的,下面举例说明。首先,area-model元素定义了文档的宽度和高度,以及文档如何垂直(1 行)和水平(3 列)划分。
列和行使用 hspacing 和 vspacing 属性定义,其值是宽度和高度属性的百分比。
然后使用嵌套的子区域元素详细说明area-model元素中定义的初始布局,这些子区域元素具有与布局的物理特性相关的相似属性。在这种情况下,第一列总共有九行。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 中的路径元素可以被 SVG 中重叠的rect元素替换,只要它反映了存储在 XML 中的信息。基本上,我所需要的只是 XML 文件的可视化表示。
提前谢谢了!如果需要进一步澄清,请告诉我。