Joe: Abfrage in einem externen XML-Dokument

Beitrag lesen

Hallo,

nachfolgend das gesamte XSL. Das nur das erste Row-Element übernommen wird, ist nicht das Problem, denn wenn eine ID vorhanden ist, dann wird diese auch korrekt für alle Datensätze übergeben. Es fehlt eben nur die Hilfs-ID, falls die reguläre ID nicht vorhanden ist.
Deine beiden Vorschläge haben leider nur für den regulären Fall (das die ID übertragen wird) zum Erfolg geführt.

Vor dem Übertragen der ID werden noch weitere Elemente und Attribute übertragen. Dies funktioniert jedoch ohne Probleme und ich habe diese in der XSL weggelassen.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" media-type="text/xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:strip-space elements="*" />

<xsl:variable name="Import\_FileName">  
	<xsl:text>Import\_files/Import-file.xml</xsl:text>  
</xsl:variable>	  

<xsl:variable name="import\_data" select="document($Import\_FileName)" />  
  
<xsl:variable name="newline">  
	<xsl:text>&#xA;</xsl:text>  
</xsl:variable>  

<xsl:template match="/">  
	<xsl:value-of select="$newline" />  
		<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE volume SYSTEM "mpallg.dtd">]]></xsl:text>  
	<xsl:value-of select="$newline" />  
	<xsl:apply-templates select="node()"/>  
</xsl:template>	  

<xsl:template match="node()|@\*">  
	<xsl:copy>  
		<xsl:apply-templates select="@\*|node()" />  
	</xsl:copy>  
</xsl:template>	  


<xsl:template match="dataset">  

	<xsl:variable name="hilfs\_id" select="@hilfs\_id" />  

		<xsl:element name="dataset">  
		  
		<!-- Übertragen anderer Attribute und Elemente -->  
		  
			<xsl:attribute name="id">  
				<xsl:choose>  
					<xsl:when test="not(@id = '')">  
							<xsl:value-of select="$import\_data//\*[hilfs\_ID = $hilfs\_id]/ID"/>  
					</xsl:when>  
					<xsl:otherwise>			  
							<xsl:value-of select="$import\_data//\*[hilfs\_ID = $hilfs\_id]/hilfs\_ID"/>  
					</xsl:otherwise>  
				</xsl:choose>  
			</xsl:attribute>  
			  
		<!-- Übertragen anderer Attribute und Elemente -->  
		  
		</xsl:element>  
  
</xsl:template>		  

</xsl:stylesheet>

Grüße Joe