nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Folgende Variablen Deklaration geht nicht. Warum?

Von: Lothar Behrens (lothar.behrens@lollisoft.de) [Profil]
Datum: 31.12.2009 12:24
Message-ID: <faa68257-215f-49eb-af36-a7b554dfc198@34g2000yqp.googlegroups.com>
Newsgroup: de.comp.text.xml
In meinem XSLT Template versuche ich festzustellen, ob ein XML Element
überhaupt existiert. Wenn nicht, soll ein Wert
eines anderen Elementes verwendet werden. Nur geht das nicht.

Die Ausgabe in die Datei Generation.log zeigt, dass es nicht geht:

Have application ID = 2
Create demo
DBName postbooks
InternalDBNameParam ''
InternalDBName ''

An was kann das noch liegen?

Danke und ein frohes neues Jahr.

Lothar

<!-- Folgende Variable greift auf das nicht vorhandene Element zu -->
<xsl:variable name="InternalDBNameParam" select="//lbDMF/
applicationparameter/parameter[@name='InternalDBName'][@applicationid=
$ApplicationID]/@value"/>

<xsl:variable name="OrginalApplicationName" select="//lbDMF/
applications/application[@ID=$ApplicationID]/@name"/>
<xsl:variable name="ApplicationName">
<xsl:call-template name="SubstringReplace">
<xsl:with-param name="stringIn">
<xsl:call-template name="SubstringReplace">
<xsl:with-param name="stringIn">
<xsl:call-template name="SubstringReplace">
<xsl:with-param name="stringIn">
<xsl:value-of select="$OrginalApplicationName"/>
</xsl:with-param>
<xsl:with-param name="substringIn" select="'-'"/>
<xsl:with-param name="substringOut" select="''"/>
</xsl:call-template>
</xsl:with-param>
<xsl:with-param name="substringIn" select="'>'"/>
<xsl:with-param name="substringOut" select="''"/>
</xsl:call-template>
</xsl:with-param>
<xsl:with-param name="substringIn" select="' '"/>
<xsl:with-param name="substringOut" select="''"/>
</xsl:call-template>
</xsl:variable>

<!-- Fallback to application name if parameter is missing. -->
<xsl:variable name="InternalDBName">
<xsl:choose>
<xsl:when test="$InternalDBNameParam=''"><xsl:value-of
select="$ApplicationName"/></xsl:when>
<xsl:otherwhise><xsl:value-of select="$InternalDBNameParam"/></
xsl:otherwhise>
</xsl:choose>
</xsl:variable>

<exsl:document href="{$ApplicationName}/Generation.log"
method="text">
Have application ID = <xsl:value-of select="$ApplicationID"/>
Create <xsl:value-of select="$OrginalApplicationName"/>
DBName <xsl:value-of select="$DBName"/>
InternalDBNameParam '<xsl:value-of select="$InternalDBNameParam"/>'
InternalDBName '<xsl:value-of select="$InternalDBName"/>'
</exsl:document>

<!-- here is the template that does the replacement -->
<xsl:template name="SubstringReplace">
<xsl:param name="stringIn"/>
<xsl:param name="substringIn"/>
<xsl:param name="substringOut"/>
<xsl:choose>
<xsl:when test="contains($stringIn,$substringIn)">
<xsl:value-of select="concat(substring-before($stringIn,
$substringIn),$substringOut)"/>
<xsl:call-template name="SubstringReplace">
<xsl:with-param name="stringIn" select="substring-after($stringIn,
$substringIn)"/>
<xsl:with-param name="substringIn" select="$substringIn"/>
<xsl:with-param name="substringOut" select="$substringOut"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$stringIn"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

[ Auf dieses Posting antworten ]

Antworten