XSLT-Identitätsumwandlung in ein Dokumentenverzeichnis umwandeln und anwenden?

Ich habe einen Ordner mit HTML-Dateien, die ungefähr so aussehen:

<div id="d10e3019" class="content">
   <h1>header</h1>
   <div class="adv">
      <div class="warn">
         <img width="60px" height="20px" src="img/warn.png" alt="WARNING"></img>
         <p class="cause">gfgfg!</p>
         <p>⇒  Thgfh</p>
         <p class="step">⇔ 
            <span class="emphasis">hgfh
         </p>
      </div>
   </div>
</div>

Sie alle haben<div id="someId" class="content"> als root-Element und dann einfach diverse HTML-Markups.

Ich muss alle @ ändesrc Attribute imimg Tags jedes Dokuments sehen so aus:

<img width="60px" height="20px" src="http://server.com/{$nameOfTheCurtentFolder}/img/warn.png" alt="WARNING"></img>

und wickeln Sie die neue Ausgabe in eine anderediv mit einem neuen untergeordneten Element. Der Rest des Dokuments muss genau gleich sein.

Ich habe dieses Stylesheet ausprobiert, aber mit diesem Stylesheet werden nur die Textknoten in das Ausgabedokument geschrieben (während das neue @ generiert wirddiv element works):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:fn='http://www.w3.org/2005/xpath-functions' exclude-result-prefixes='xsl xs fn' xmlns:h="http://java.sun.com/jsf/html">
    <xsl:output method="xml" encoding="utf-8"/>
    <xsl:strip-space elements="*"/>

    <xsl:param name="files" select="collection('./output?select=*.html')"/>

    <xsl:template match="/">
        <xsl:for-each select="$files">
            <xsl:variable name="fileName" select="tokenize(base-uri(), '/')[last()]"/>
            <xsl:result-document method="xhtml" href="new/{$fileName}">
                <div>
                    <h:selectBooleanCheckbox value="pubs"/>
                    <xsl:copy>
                        <xsl:apply-templates select="@* | node()"/>
                    </xsl:copy>
                </div>
            </xsl:result-document>
        </xsl:for-each>
    </xsl:template>
    <xsl:template match="@src">
        <xsl:variable name="nameOfTheCurtentFolder" select="tokenize(base-uri(), '/')[last()-2]"/>
        <xsl:text>http://server.com/</xsl:text>
        <xsl:value-of select="$nameOfTheCurtentFolder"/>
        <xsl:text>/output/</xsl:text>
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

Die Ausgabe sieht folgendermaßen aus:

              <div>
                 <h:selectBooleanCheckbox value="pubs"/>
                  headergfgfg!⇒  Thgfhhgfh
              </div>

Dies ist eine Fortsetzung meiner früheren Frage,Attributwert ändern, ohne neues Ausgabedokument zu erstellen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage