Holge r: X-Path Probleme

Beitrag lesen

auf die schnelle an bei ein Muster, allerdings wird nur mit contains im Beispiel geprüft, sollten die patch name keine fest Länge habe etc. mus du die xpath anfrage genauer gestalten:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:for-each select="xml/patch[contains(preceding-sibling::patch/veraltet/text(),@name) or contains(following-sibling::patch/veraltet/text(),@name)]">
            <xsl:value-of select="@name"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Am besten du schaust dir auch noch mal die Xpatch Erläuterungen auf selfhtml and. Die sind relativ gut verständlich.

Gruß, H.

Hallo,

<xml>
<patch name="112905-02 ">
<veraltet>112713-02, 112233-12 </veraltet>
</patch>
<patch name="114209-09 ">
<veraltet>114728-08, 118736-12, 134886-03 </veraltet>
</patch>
<patch name="112233-12 ">
<veraltet>117392-01, 119382-10 </veraltet>
</patch>
[...]
</xml>

brauch ein xsl-template, mir fehlen leider einige x-path kenntnisse.
ich möchte, dass jeder "patch name" mit allen im Programm veralteten Patches verglichen wird, um zu überprüfen ob ein "veralteter Patch" = "Patch name" ist. falls dies der fall ist, soll er angezeigt werden.
(oben im Beispiel würde der 3. Patch ausgegeben werden, da er ein veralteter vom 1. Patch ist)

ich habs bisher so versucht:

<xsl:template match="patch">
        <xsl:if test="./@name">
            <xsl:for-each select="./patch/veraltet">
               xsl:choose
                <xsl:when test="@name[contains(node(),'veraltet')]">
                    <tr valign="top" bgcolor="#f5deb3">
                      <td width="100px" align="center">
                      <xsl:value-of select="./@name"/>
                      </td>
                      <td width="200px" align="center">
                      <xsl:value-of select="./veraltet"/>
                      </td>
                   </tr>
              </xsl:when>
             </xsl:choose>
           </xsl:for-each>
       </xsl:if>
    </xsl:template>

Hoffe ihr könnt mir helfen.
LG