clabut: externe ENTITY und Javascript variable

Hallo,
Ich habe 4 Dateien:

Eine retest.html:
<HTML>
<HEAD>
<TITLE>Untitled</TITLE>
<SCRIPT language="Javascript" type="text/javascript">

var ua = prompt("english,french,german");
var xslDoc = new ActiveXObject("MsXml2.DomDocument.3.0");
xslDoc.async = true;
xslDoc.load("retest.xsl");
var xmlDoc= new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async=false;
xmlDoc.load("retest.xsl");
function rebuild(ua){
var selectedNode = xslDoc.selectNodes("//xsl:variable[@name='ua']/@select");
selectedNode.item(0).value="'"+ua+"'";
futuredata.innerHTML=xmlDoc.transformNode(xslDoc);
}
</SCRIPT>
</HEAD>
<BODY onload="rebuild(ua)">
<DIV id="futuredata"></DIV>
</BODY>
</HTML>

eine retest.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="file://M:\Xml\Retest\retest.xsl"?>
<!DOCTYPE Retest
[
<!ELEMENT Test (valeur,testa)>
<!ELEMENT testa (#PCDATA)>
<!ENTITY data SYSTEM "myData.ini">
]>
<Test>
<testa>&data;</testa>
<valeur></valeur>
</Test>

eine retest.xsl:
<?xml version="1.0"?>
<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns="http://www.w3.org/TR/REC-html40">
<xsl:variable name="ua" select="''" />
<xsl:template match="/">
<xsl:variable name="Vor" select="substring-after(node(),'Vorname =')" />
<xsl:variable name="VorN" select="substring-before($Vor,'Beruf')" />
<html>
<head>
</head>
<body>
<xsl:if test="$ua='french'">Prenom: </xsl:if>
<xsl:if test="$ua='german'">Vorname: </xsl:if>
<xsl:if test="$ua='english'">first name: </xsl:if>
<xsl:value-of select="$VorN"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

und eine myData.ini
Name = Dupond
Vorname = Paul
Beruf = Internist
Hobby = kayak

Nach der Wahl der Sprache sehe ich entweder Prenom oder Vorname ohne Probleme. Wenn ich der Vorname sehen will ich muß <xsl:template match="/">durch <xsl:template match="retest/testa"> ersetzen, dann kann ich die Sprache nicht mehr wählen. Gibt es eine Methode um die beide template zusammen zu nutzen?
Danke für jede Antwort
clabut

  1. Hallo,

    xmlDoc.load("retest.xsl");

    ^^^^
    da solltest du eigentlich deine XML-Datei laden! Klienier Tippfehler wohl.

    eine retest.xml:

    Die ist ganz falsch:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="file://M:\Xml\Retest\retest.xsl"?>
    <!DOCTYPE Retest

    Also müsste dein oberstes Element <Retest> lauten, oder dein DOCTYPE "Test".

    [
    <!ELEMENT Test (valeur,testa)>
    <!ELEMENT testa (#PCDATA)>
    <!ENTITY data SYSTEM "myData.ini">
    ]>
    <Test>
    <testa>&data;</testa>
    <valeur></valeur>
    </Test>

    eine retest.xsl:

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:variable name="ua" select="''" />
    <xsl:template match="/">
    <html>
    <head>
    </head>
    <body>
    <xsl:if test="$ua='french'">Prenom: </xsl:if>
    <xsl:if test="$ua='german'">Vorname: </xsl:if>
    <xsl:if test="$ua='english'">first name: </xsl:if>
    <xsl:apply-templates />
    </body>
    </html>
    </xsl:template>
    <xsl:template match="testa">
    <xsl:variable name="Vor" select="substring-after(.,'Vorname =')" />
    <xsl:variable name="VorN" select="substring-before($Vor,'Beruf')" />
    <xsl:value-of select="$VorN"/>
    </xsl:template>
    </xsl:stylesheet>

    Grüße
    Thomas