Hallo Gunnar,
„Aber wem erzähle ich das? Dem wissend zwinkernden? Wahrscheinlich doch nur dem Archiv.“
Ich finde, dieser Thread wäre ein guter Kandidat für die Forumsauslese. Hättest Du etwas dagegen, wenn der Thread inklusive Deiner Lösung im Weblog weiterverarbeitet wird?
Eklig wird’s, weil statt doppelten auch einfache Anführungszeichen stehen können
Tricky ist die Sache mit '"' und "'". Eine Maskierung hab ich nicht hinbekommen; da fiel mir nichts Besseres ein als das Ergebnis des einen Tests in der Variablen startsWithApos abzulegen. Geht das auch ohne? Lassen sich die beiden Zeilen
<xsl:variable name="startsWithApos" select='starts-with($substringAfterEqualSign, "'")'/>
<xsl:if test="starts-with($substringAfterEqualSign, '"') or $startsWithApos">
>
> in nur mit einem 'xsl:if' schreiben?
Ja, das geht:
`<xsl:if test="starts-with($substringAfterEqualSign, '"') or starts-with($substringAfterEqualSign, "'")">`{:.language-xml}
In XPath 2.0 (NICHT 1.0, das fliegt auf die Schnauze!) ist auch noch folgendes möglich:
`<xsl:if test="starts-with($substringAfterEqualSign, '"') or starts-with($substringAfterEqualSign, '''')">`{:.language-xml}
Das kann man z.B. in Funktion sehen, wenn man Dein Stylesheet durch Saxon jagt (Saxon kann XPsth 2.0). Da Saxon allerdings etwas strenger ist, musst Du das Namespace-Prefix vor den Attributen in Deinem xsl:output jedoch weglassen, der XSLT-Standard schreibt für Attribute nämlich keinen Namespace vor:
`<xsl:output method="xml" encoding="UTF-8" standalone="no" indent="yes" />`{:.language-xml}
Viele Grüße,
Christian