Hallo,
seit Stunden ärger ich mich jetzt schon mit dem problem herum, und als Neuling gehen mir langsam die Ideen aus...
Was ich möchte ist aus einer gegebenen XML Datei über ein bestimmtes Tag iterieren und ein Attribut auslesen, wenn ein anderes einen bestimmten Wert hat.
Das Problem bei der Sache ist aber, dass ich bei dem for-each kein Element finde...
Das ist die zu parsende XML. Gesucht werden soll über die rs:data jedes z:row, und dann jeweils den Text ausgeben, wenn das Attribut LOESUNGSREVELANT='true' ist.
<xml>
<s:Schema id='RowsetSchema' xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'>
<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='POSITION'><s:datatype dt:type='i2' /></s:AttributeType>
<s:AttributeType name='VATERPOS'><s:datatype dt:type='i2' rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='SUBPOSITION'><s:datatype dt:type='i2' /></s:AttributeType>
<s:AttributeType name='ZIEL'><s:datatype dt:type='string' dt:maxLength='45' /></s:AttributeType>
<s:AttributeType name='QUELLE'><s:datatype dt:type='string' dt:maxLength='45' /></s:AttributeType>
<s:AttributeType name='SERVICEANFRAGE'><s:datatype dt:type='string' dt:maxLength='22' rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='TEXT'><s:datatype dt:type='string' dt:maxLength='2147483647' /></s:AttributeType>
<s:AttributeType name='DATUM'><s:datatype dt:type='dateTime' /></s:AttributeType>
<s:AttributeType name='LOESUNGSRELEVANT'><s:datatype dt:type='string' dt:maxLength='5' rs:maybenull='false' /></s:AttributeType>
<s:extends type='rs:rowbase'/></s:ElementType></s:Schema>
<rs:data xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'>
<z:row POSITION="1" VATERPOS="1" QUELLE="Herr Peter Dammeier" SERVICEANFRAGE="00000023-001" TEXT="Lösungsrelevant" DATUM="2009-01-16T00:00:00" LOESUNGSRELEVANT="true" />
</rs:data>
</xml>
<P>
<FORM id=pickForm method=post target=_self></FORM>
</P>
Derzeit versuche ich das mit dieser XSL:
<xml id=LoesungXML>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://www.p2plus.com" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:template match="/">
<xsl:text>TEST1</xsl:text>
<xsl:for-each select="*">
<xsl:text>TEST2</xsl:text>
<xsl:if test="@LOESUNGSRELEVANT='true'">
<xsl:text>TEST3</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="@TEXT" />
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</xml>
Wenn ich mir aber die generierte XML anschaue, erscheint da nur der XLS Header und das TEST1... TEST2 erscheint jedoch nie. Gehe ich von woanders aus als vom root, z.b. vom XML Tag im match, erhalte ich nichtmal das Test1...