我有一个模式识别的XSLT
转换效果很好。但是,XSLT
的预期用户可能无法访问模式感知处理器。因此,我想编写一些代码,将我的模式感知XSLT
转换为XSLT,以供符合基本级别的处理器使用。
出于我的目的,使用模式感知结构仅限于匹配模板,即
<xsl:template match="element(*, Candidate)">...</>
我不希望这是一个全自动的过程。我想生成一个XSLT
,对于complexType
中的每个XSD
,可以在指定的浮出水面的XSD
element
中找到其用途。 / p>
示例代码:
<xsd:schema xmlns="example.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="example.xsd" elementFormDefault="qualified" version="0.0">
<xsd:element name="Candidate" type="Candidate"/>
<xsd:complexType name="Candidate">
<xsd:sequence>
<xsd:element name="Code" type="Code" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Name" type="xsd:string" minOccurs="0"/>
<xsd:element name="PartyId" type="Code" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Code">
<xsd:sequence>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
元素Candidate
的预期输出如下:
<complexType_usages>
<usage complexType="Code" path="Candidate/Code" />
<usage complexType="Code" path="Candidate/Party" />
</complexType_usages>
答案 0 :(得分:0)
从经过验证的实例中进行工作,而不是尝试分析架构(只要实例具有足够的代表性),可能是最简单的。对于每个元素,输出类型注释(使用saxon:type-annotation)和路径,然后获取类型/路径对的列表,并消除重复和冗余。