Преобразовать схему стилей с учетом схемы - PullRequest
0 голосов
/ 02 июля 2019

У меня есть преобразование XSLT с учетом схемы, которое хорошо работает. Однако ожидаемые пользователи XSLT, скорее всего, не будут иметь доступа к обработчику схемы . Таким образом, я хотел бы написать некоторый код, который преобразует мой XSLT с поддержкой схемы в XSLT, который может использоваться процессорами, соответствующими базовому уровню.

В моих целях использование конструкций с поддержкой схемы ограничено соответствующими шаблонами, т.е. <xsl:template match="element(*, Candidate)">...</>

Я не ожидаю, что это будет полностью автоматический процесс. Я хотел бы сгенерировать XSLT, который для каждого complexType в XSD нашел бы его использование в указанной поверхности XSD element.

Пример кода:

<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>

1 Ответ

0 голосов
/ 02 июля 2019

Возможно, проще всего работать с проверенным экземпляром, а не пытаться анализировать схему (при условии, что экземпляр достаточно представительный). Для каждого элемента выведите аннотацию типа (используя saxon: type-annotation) и путь, затем возьмите список пар тип / путь и устраните дубликаты и избыточность.

...