2d矩阵的xml表示

时间:2013-07-10 09:40:40

标签: xml xsd

我正在尝试在xml(使用xsd架构)中找到2d矩阵的最佳表示。我看到很多代表,如thisthis。不过,我不能选择最好的选择。请建议我。也许有任何建议或标准?

1 个答案:

答案 0 :(得分:2)

我认为它非常依赖于您需要它的确切目的(例如,在xslt中简单选择单元格或列,表示跨越单元格或行的可能性等)。

最常见的(IMO)是您的第一个链接中描述的解决方案(它类似于HTML表)。在我看来,定义一些具有实际行的单元格数的属性是有用的 - 只是为了使选择或引用更简单,并且还能够跳过一些单元格或行。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:complexType name="cell_type">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="cellNo" type="xs:int" use="required" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="row_type">
        <xs:sequence>
            <xs:element name="Cell" type="cell_type" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="rowNo" type="xs:int" use="required" />
    </xs:complexType>

    <xs:element name="Matrix">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Row" type="row_type" maxOccurs="unbounded">
                    <xs:unique name="cellNoKey">
                        <xs:selector xpath="Cell" />
                        <xs:field xpath="@cellNo" />
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:unique name="rowNoKey">
            <xs:selector xpath="Row" />
            <xs:field xpath="@rowNo" />
        </xs:unique>
    </xs:element>
</xs:schema>