在xs:import schema中声明的Xslt转换类型

时间:2017-06-07 08:10:33

标签: xslt

我需要转换一个xsd,它将Java dtos表示为html。 主要目标是,如果常规输入失败,即使在生产中也允许填充对象。 (即,它不需要漂亮)

我发现https://github.com/MichielCM/xsd2html2xml应该完全符合我的要求,但不幸的是没有。

我的问题如下:如果我有这样的源架构:

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

<xs:import schemaLocation="comm.xsd" namespace="http://www.trivia/commonTypes/v1_0" />

<xs:element name="common" type="c:typeAddress"/>
<xs:element name="local" type="typeAddress"/>
<xs:element name="simple" type="xs:string"/>

<xs:complexType name="typeAddress">
    <xs:sequence>
        <xs:element name="city" minOccurs="0">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:maxLength value="40" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

简单元素和局部元素按预期转换,但共同元素不是。为了示例,comm.xsd包含typeAdress的副本。

问题是如何在xsl转换中引用用import语句声明的类型?

1 个答案:

答案 0 :(得分:0)

执行从源XSD文档开始的任何类型的处理都是一项艰巨的任务,因为有很多表达方式的方法:例如,您是否需要处理命名属性组或模型组? xs:重新定义怎么样?您可以随时扩展一些像这样的软件来处理另外一个案例,但是您需要处理一个上坡自动扶梯:在您完成之前,您还需要做更多的事情。我的建议是,不要这样做。使用API​​可以访问由架构处理器构建的内部架构组件模型。 Xerces处理器通过Java API公开它,Saxon处理器将其公开为XML文档(称为SCM文件)。无论哪种方式,所有表面的东西,如xs:import都需要处理,你只需要担心基础数据模型。