Ce qui suit ne fonctionne pas comme prévu:XSLT: attribut conditionnel Valeur manipulation
<xsl:template match="xs:complexType">
<xsl:param name="prefix" />
<xsl:if test="$prefix='core'">
<xsl:variable name="prefix" select=""/>
</xsl:if>
<xs:complexType name="{concat($prefix, @name)}">
<xsl:apply-templates select="node()" />
</xs:complexType>
<xsl:apply-templates select=".//xs:element" />
</xsl:template>
L'idée est que si la valeur de la variable préfixe est « core », je ne veux pas qu'il soit ajouté sur la nom valeur d'attribut. Toute autre valeur, j'aimerais être ajouté. IE:
<xs:complexType name="coreBirthType">
... est pas acceptable, alors que le suivant serait:
<xs:complexType name="BirthType">
Mais je dois permettre que cela se produise:
<xs:complexType name="AcRecHighSchoolType">
J'ai essayé ceci dans un bloc, mais saxon se plaint de ne pas trouver un noeud de fermeture:
<xsl:choose>
<xsl:when test="starts-with(.,'core')">
<xs:complexType name="{@name)}">
</xsl:when>
<xsl:otherwise>
<xs:complexType name="{concat($prefix, @name)}">
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="node()" />
</xs:complexType>
Quelle est la meilleure façon de gérer cela?
Oui, une fois défini, vous ne pouvez pas reasign une valeur de préfixe. –