Note that there are some explanatory texts on larger screens.

plurals
  1. POXSL: transform a XML file with another to filter it
    primarykey
    data
    text
    <p>Its me again, but this time i have a real problem... I have one XML, and i have to transform it in another XML by using a filter of another XML</p> <p><strong>File_in.xml:</strong></p> <pre><code> &lt;?xml version="1.0" encoding="ISO-8859-15"?&gt; &lt;root&gt; &lt;item&gt; &lt;server&gt;001023541&lt;/server&gt; &lt;name&gt;P1&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;1&lt;/status&gt; &lt;ram&gt;1024&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; &lt;item&gt; &lt;server&gt;201012345&lt;/server&gt; &lt;name&gt;P2&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;4&lt;/status&gt; &lt;ram&gt;2048&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; &lt;item&gt; &lt;server&gt;120332416&lt;/server&gt; &lt;name&gt;P1&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;2&lt;/status&gt; &lt;ram&gt;8196&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; &lt;/root&gt; </code></pre> <hr> <p>And another XML:</p> <p><strong>filter.xml</strong></p> <pre><code> &lt;?xml version="1.0" encoding="ISO-8859-15"?&gt; &lt;Filtre&gt; &lt;Bloc5&gt; &lt;Part1&gt; &lt;EAN&gt;001023541&lt;/EAN&gt; &lt;EAN&gt;012356549&lt;/EAN&gt; &lt;EAN&gt;012356559&lt;/EAN&gt; &lt;EAN&gt;012356569&lt;/EAN&gt; &lt;/Part1&gt; &lt;Part2&gt; &lt;EAN&gt;201012345&lt;/EAN&gt; &lt;EAN&gt;201012346&lt;/EAN&gt; &lt;EAN&gt;201012347&lt;/EAN&gt; &lt;/Part2&gt; &lt;/Bloc5&gt; &lt;/Filtre&gt; </code></pre> <hr> <p>If /root/item/server matches with an element of /Filtre/Bloc5/Part1/EAN, i replace </p> <pre><code> &lt;item&gt; &lt;server&gt;001023541&lt;/server&gt; &lt;name&gt;P1&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;1&lt;/status&gt; &lt;ram&gt;1024&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; </code></pre> <p>by</p> <pre><code> &lt;item&gt; &lt;server&gt;MAIN&lt;/server&gt; &lt;status&gt;PRODUCTION&lt;/status&gt; &lt;/item&gt; </code></pre> <hr> <p>otherwise if /root/item/server matches with an element of /Filtre/Bloc5/Part2/EAN, i replace</p> <pre><code> &lt;item&gt; &lt;server&gt;201012345&lt;/server&gt; &lt;name&gt;P2&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;4&lt;/status&gt; &lt;ram&gt;2048&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; </code></pre> <p>by</p> <pre><code> &lt;item&gt; &lt;server&gt;BACKUP&lt;/server&gt; &lt;status&gt;STOPPED&lt;/status&gt; &lt;/item&gt; </code></pre> <hr> <p>and the other are automatically replaced like:</p> <pre><code> &lt;item&gt; &lt;server&gt;120332416&lt;/server&gt; &lt;name&gt;P1&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;status&gt;2&lt;/status&gt; &lt;ram&gt;8196&lt;/ram&gt; &lt;hdd&gt;8 To&lt;/hdd&gt; &lt;/item&gt; </code></pre> <p>by</p> <pre><code> &lt;item&gt; &lt;name&gt;OFFLINE&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;/item&gt; </code></pre> <hr> <p>I get the name of the XML (used to filter) by this way:</p> <pre><code> &lt;!-- filter settings --&gt; &lt;xsl:param name="filter_xml" /&gt; &lt;xsl:variable name="filter" select="document('$filter_xml')" /&gt; </code></pre> <p>And there is my code :</p> <pre><code> &lt;xsl:for-each select="root/item"&gt; &lt;xsl:choose&gt; &lt;xsl:when test="index-of(($filter/Filtre/Bloc5/Part1/EAN), ./server)"&gt; &lt;item&gt; &lt;server&gt;MAIN&lt;/server&gt; &lt;status&gt;PRODUCTION&lt;/status&gt; &lt;/item&gt; &lt;/xsl:when&gt; &lt;xsl:when test="index-of(($filter/Filtre/Bloc5/Part2/EAN), ./server)" &gt; &lt;item&gt; &lt;server&gt;BACKUP&lt;/server&gt; &lt;status&gt;STOPPED&lt;/status&gt; &lt;/item&gt; &lt;/xsl:when &gt; &lt;xsl:otherwise&gt; &lt;item&gt; &lt;name&gt;OFFLINE&lt;/name&gt; &lt;desc&gt;Production&lt;/desc&gt; &lt;/item&gt; &lt;/xsl:otherwise&gt; &lt;/xsl:for-each&gt; </code></pre> <p>But this does not work...</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload