Announcement

Collapse
No announcement yet.

Search Replace

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Search Replace

    Hi @ all,

    ich habe ein problem und zwar wie oben in der Überschrift will ich in meiner xsl aus der Xml eine bestimmte stelle mit einer anderen stelle in der xml ersetzen.

    Das soll hier passieren:
    <xsl:template name="ShowTEXTVALUE">
    <xsl:for-each select="//CASE/ODES/ODE/COMPOUND/CATTRS/CATTR">
    <xsl:variable name="DEFname">
    <xsl:value-of select="./DEFNAME"></xsl:value-of>
    </xsl:variable>

    <xsl:if test="$DEFname='TEXTVALUE'">

    <xsl:value-of disable-output-escaping="yes" select="./CITEM/ATTR/VALLIST/ITEM/STRING"/>

    </xsl:if>
    </xsl:for-each>
    </xsl:template>


    XML:
    das Rot hinterlegte soll mit dem Grün Hinterlegtem ersetzt werden


    <STRING>
    &lt;P&gt;&lt;STRONG&gt;&lt;U&gt;----------&lt;/U&gt;&lt;FONT face=&quot;Comic Sans MS&quot; color=#8c150f&gt;FORD&lt;/FONT&gt;&lt;U&gt;-----------&lt;/U&gt;&lt;FONT face=&quot;Comic Sans MS&quot;&gt;FIESTA&lt;/FONT&gt;&lt;U&gt;----------&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
    &lt;P&gt;&lt;IMG style=&quot;WIDTH: 255px; HEIGHT: 178px&quot; height=181 alt=&quot;&quot; hspace=0 src=&quot;cid:279f9d6a-ac58-44ad-a6b8-f0f8e2173c55.jpg&quot; width=296 align=baseline border=0&gt;&lt;/P&gt;
    </STRING>

    <ATTACHMENTS>
    <ATTACHMENT>
    <NAME>279f9d6a-ac58-44ad-a6b8-f0f8e2173c55.jpg</NAME>
    <ID>100041</ID>
    <EXTENSION>jpg</EXTENSION>
    </ATTACHMENT>
    </ATTACHMENTS>


    Vielen dankp
    Zuletzt editiert von Kadir; 11.03.2009, 13:09.

  • #2
    Ansatz mit Identitäts-Template und separater String-Ersetzung:
    Code:
    <xsl:template match="@* | node()">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
    </xsl:template>
    
    <xsl:template match="STRING">
      <STRING>
        <xsl:variable name="search" select="concat('cid:', following-sibling::ATTACHMENTS/ATTACHMENT/NAME)"/>
        <xsl:variable name="replace" select="concat(following-sibling::ATTACHMENTS/ATTACHMENT/ID, '.', following-sibling::ATTACHMENTS/ATTACHMENT/EXTENSION)"/>
        <xsl:value-of select="concat(substring-before(.,$search), $replace, substring-after(.,$search))"/>
      </STRING>
    </xsl:template>
    Ergebnis:
    Code:
    <STRING>
    &lt;P&gt;&lt;STRONG&gt;&lt;U&gt;----------&lt;/U&gt;&lt;FONT face="Comic Sans MS" color=#8c150f&gt;FORD&lt;/FONT&gt;&lt;U&gt;-----------&lt;/U&gt;&lt;FONT face="Comic Sans MS"&gt;FIESTA&lt;/FONT&gt;&lt;U&gt;----------&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
    &lt;P&gt;&lt;IMG style="WIDTH: 255px; HEIGHT: 178px" height=181 alt="" hspace=0 src="100041.jpg" width=296 align=baseline border=0&gt;&lt;/P&gt;
    </STRING>
    <ATTACHMENTS>
      <ATTACHMENT>
        <NAME>279f9d6a-ac58-44ad-a6b8-f0f8e2173c55.jpg</NAME>
        <ID>100041</ID>
        <EXTENSION>jpg</EXTENSION>
      </ATTACHMENT>
    </ATTACHMENTS>
    Zuletzt editiert von Thomas Meinike; 12.03.2009, 15:50.

    Comment


    • #3
      Hi Thomas Vielen Dank für deine Antwort. Ich Probiere es gleich mal aus Danke Nochmals

      Comment


      • #4
        Hi Thomas Nochmal,
        hab es vorhin probiert hatt aber leider nicht funkinoiert ich habe genau deinen code übernommen Compilieren tut es sich aber mein ergebnis ist nicht sowie dein ergebnis.Hab ich da Vielleicht was Falsch gemacht? und noch was was ist der teil hier

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

        ich hab nicht so viel ahnung von XSLT deshalb die Nachfrage Soory!

        Comment


        • #5
          Ich habe den Beispielcode auf das von Dir gepostete XML-Fragment abgestimmt. Vermutlich stehen die Elemente in einer anderen Relation zueinander (speziell STRING und ATTACHMENTS).

          Das Identitäts-Template sorgt für eine 1:1-Transformation des Originaldokuments und das zusätzliche STRING-Template schreibt für dieses Element andere Regeln vor.

          Comment

          Working...
          X