Hallo Ich habe Feld <name>ATTN Dani</name>
, ich muss den ATTN entfernen, aber es kommt ATTN manchmal Attn oder Attn und sogar ATtn wie kann ich substring tun auf diesem habe ich die unten xslt getan, aber es beeinflusst den Wert .Ich möchte nicht der WertWie Teilstring mit Groß-und Kleinschreibung
<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:pfx4="http://xmlns.oracle.com/apps/otm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<PARTNER_INBOUND_V2>
<xsl:choose>
<xsl:when test="starts-with(upper-case(//root/name), 'ATTN')">
<IS_ACTIVE>Working</IS_ACTIVE>
<test><xsl:value-of select="normalize-space(substring-after(upper-case(//root/name),'ATTN'))"/></test>
</xsl:when>
<xsl:otherwise>
<IS_ACTIVE>Y</IS_ACTIVE>
</xsl:otherwise>
</xsl:choose>
</PARTNER_INBOUND_V2>
</xsl:template>
</xsl:stylesheet>
Sie können versuchen, 'translate()' zu verwenden, um die Zeichenfolge in Groß- oder Kleinschreibung zu konvertieren und dann zu vergleichen. Siehe hierzu: http://stackoverflow.com/questions/586231/how-can-i-convert-a-string-to-upper-or-lower-case-with-xslt –
Übrigens, in Ihrem konkreten Beispiel hier, Sie werden niemals einen Namen haben, der mit '" ATTN "' beginnt, wie es in einem '' Block ist, der es speziell benötigt, um mit '" C/O "' zu beginnen, außer Sie haben mehr als ein 'name' Element als Kind der Wurzel. –
Flynn1179
Ihr Stylesheet sagt Version 1.0, aber 'high-case()' erfordert XSLT 2.0. Noch eine verwirrende Sache in deiner Frage. –