Thomas J.S.: xsl stylesheet Frage

Beitrag lesen

Hallo,

Vergiss die andere nachricht, da war ein fehler drin.

OK ;-)

So sehe mein xml und xsl file etwa aus. Im xsl verwende ich nur ein xsl:template

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.xyz.org/instance" xmlns:link="http://www.xyz.org/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:iso4222="http://www.xyz.org/iso4222" xmlns:abc="http://abc.org/int/2005">
<link:schemaRef xlink:type="simple" xlink:href="schema.xsd"/>
<versuch wahl="yes">8764386</versuch>
<!-- usw. usw. -->
.
.
.
</root>

Wie gesagt, wenn ich <xsl:template match="*[@wahl='no']"> werden mir zwar werte angezeigt, aber alle nur hintereinander und sind auch nicht die ich brauche. Wo liegt da mein Fehler? Ich raffe es nicht.

Das/dein Problem ist zwar ähnlich wie unter https://forum.selfhtml.org/?t=112506&m=711655 besprochen.
Das Element <versuch> liegt im default Namensraum (xmlns="http://www.xyz.org/instance).
Auch bei dir gibt es die zwei Möglichkeiten (mit XSLT 1)
a) alle Elemente mit einem Prefix versehen (<foo:root xmlns:foo="http://www.xyz.org/instance"> ... foo:versuch ... etc.)

oder b)
du greifst auf die Elemente mit Namen zu *[local-name() = '...'][@wahl='no'], oder alternativ kannst du versuchen *[namespace-uri() = 'http://www.xyz.org/instance'][@wahl='no']

ABER, eigentlich sollte das bei dir auch ohne funktionieren. *

--------
<xsl:stylesheet version="1.0" xmlns="http://www.xyz.org/instance" ...> zusammen mit <html xmlns="http://www.xyz.org/instance"> ist eigentlich unnötig.

Bei: <xsl:stylesheet version="1.0" xmlns="http://www.xyz.org/instance" ...>  enthält das Root-Element automatisch den entsprechenden Namensraum, oder du läßt es aus xsl:stylesheet weg und verwendest nur <html xmlns="http://www.xyz.org/instance">

------------------------------------------------
* So funktioniert es bei mir z.B.

XML:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.xyz.org/instance"
xmlns:link="http://www.xyz.org/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:iso4222="http://www.xyz.org/iso4222"
xmlns:abc="http://abc.org/int/2005">
    <link:schemaRef xlink:type="simple" xlink:href="schema.xsd"/>
    <versuch wahl="yes">8764386</versuch>
    <!-- usw. usw. -->
</root>
------------------------------------------------

XSL:

<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xyz="http://www.xyz.org/instance"
xmlns:iso4222="http://www.xyz.org/iso4222"
xmlns:abc="http://abc.org/int/2005"
xmlns="http://www.xyz.org/instance"
exclude-result-prefixes="abc iso4222 xyz">
    <xsl:output method="html"/>
    <xsl:decimal-format name="base" decimal-separator="." grouping-separator="," minus-sign="-"/>
    <xsl:template match="/">
        <html>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
    <xsl:template match="*[@wahl='yes']">
        <h1><xsl:value-of select="."/></h1>
    </xsl:template>
 </xsl:stylesheet>

------------------------------------------------

AUSAGABE:

<html xmlns="http://www.xyz.org/instance">
<body>

<h1>8764386</h1>

</body>
</html>

Grüße
Thomas

--
Surftip: kennen Sie schon Pipolino's Clowntheater?
http://www.clowntheater-pipolino.net/