Я пытаюсь использовать xslt для изменения схемы XML на другую.
У меня просто проблемы с приоритетом в одном из моих изменений.
Я хотел бы добавить в мою первую схему элемент в последовательности и добавить атрибут к элементам, которые уже существуют. Я также хочу добавить attributeGroup перед (конец тега complexType).
Мне удается создать отдельно оба преобразования, но они не работают вместе из-за приоритета.
Вот добавление моей группы атрибутов:
<xsl:template match="xsd:complexType">
<xsl:copy>
<xsl:copy-of select="*"/>
<xsl:element name="xsd:attributeGroup">
<xsl:attribute name="ref">attributsXrm</xsl:attribute>
</xsl:element>
</xsl:copy>
</xsl:template>
А вот добавление моего элемента "balisesXrm":
<xsl:template match="xsd:element">
<xsl:element name="xsd:element">
<xsl:attribute name="ref">balisesXrmType</xsl:attribute>
</xsl:element>
<xsl:copy>
<xsl:attribute name="maxOccurs">unbounded</xsl:attribute>
<xsl:apply-templates select="node()| @*[not(name() = 'maxOccurs')]" />
</xsl:copy>
</xsl:template>
Когда я запускаю свое преобразование, я получаю только созданный atttsXrm (потому что complexType находится перед элементом в моей работе, даже если имя моего complexType удалено, я не знаю почему), как вы можете видеть здесь:
<xsd:complexType>
<xsd:sequence>
<xsd:element name="refid" type="xsd:QName"/>
</xsd:sequence>
<xsd:attributeGroup ref="attributsXrm"/>
</xsd:complexType>
Я хотел бы получить:
<xsd:complexType name="typeAssociation">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="refid" type="xsd:QName"/>
<xsd:element ref="balisesXrm">
</xsd:sequence>
<xsd:attributeGroup ref="attributsXrm"/>
</xsd:complexType>
Я позволю вам увидеть мой ввод XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:SBEGestionZonesAeriennesSYSCA-schema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.2.1ec" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="typeAssociation">
<xsd:sequence>
<xsd:element name="refid" type="xsd:QName"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Я не могу найти способ поместить оба преобразования в один и тот же шаблон с apply-templates
, например.
Надеюсь, кто-нибудь может мне помочь,
С уважением.