XSL | index-of
bearbeitet von JanineSHallo SelfHTML-Community, hallo Thomas (da du mir in der Vergangenheit schon oft und gut geholfen hast!),
ich möchte mit XSL gerne abprüfen, ob in einer bestimmten Zeichenkette wiederkehrender Elemente eine Abkürzung aus einer Liste auftaucht. Die Quelldatei sieht (stark vereinfacht) in etwa so aus:
~~~ HTML
<?xml version="1.0" encoding="UTF-8"?>
<all>
<abbreviations>
<abbr>ABG</abbr>
<abbr>AGI</abbr>
<abbr>BBL</abbr>
<abbr>ECK</abbr>
</abbreviations>
<documents>
<doc no="1">In diesem Doc taucht die Abkürzung ABG auf.</doc>
<doc no="2">Dieses Doc besitzt keine Abkürzung.</doc>
<doc no="3">Noch eine Abkürzung BBL.</doc>
<doc no="4">Und hier ECK.</doc>
<doc no="5">Und hier nochmal ECK.</doc>
</documents>
</all>
~~~
Nur leider habe ich noch irgendwo einen Fehler beim index-of. Vielleicht sehen die Geübteren von euch gleich, woran es bei mir hakt. Ich grübel seit gestern abend und finde keine Lösung :(
~~~ HTML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="all">
<xsl:variable name="abbr" select="abbreviations/abbr"/>
<all>
<xsl:for-each select="//doc">
<xsl:variable name="actdoc" select="."/>
<xsl:if test="fn:contains($actdoc, fn:index-of($abbr, $actdoc))">
<doc>
<xsl:attribute name="no"><xsl:value-of select="@no"/></xsl:attribute>
<xsl:value-of select="$actdoc"/>
</doc>
</xsl:if>
</xsl:for-each>
</all>
</xsl:template>
</xsl:stylesheet>
~~~
Die Ausgabe sollte in etwa so aussehen:
~~~ HTML
<all>
<doc no="1">ABG</doc>
<doc no="3">BBL</doc>
<doc no="4">ECK</doc>
<doc no="5">ECK</doc>
</all>
~~~
Danke schonmal für eure Hilfe!
Viele Grüße
Janine S.
XSL | index-of
bearbeitet von JanineSHallo SelfHTML-Community, hallo Thomas (da du mir in der Vergangenheit schon oft und gut geholfen hast!),
ich möchte mit XSL gerne abprüfen, ob in einer bestimmten Zeichenkette wiederkehrender Elemente eine Abkürzung aus einer Liste auftaucht. Die Quelldatei sieht (stark vereinfacht) in etwa so aus:
~~~ HTML
<?xml version="1.0" encoding="UTF-8"?>
<all>
<abbreviations>
<abbr>ABG</abbr>
<abbr>AGI</abbr>
<abbr>BBL</abbr>
<abbr>ECK</abbr>
</abbreviations>
<documents>
<doc no="1">In diesem Doc taucht die Abkürzung ABG auf.</doc>
<doc no="2">Dieses Doc besitzt keine Abkürzung.</doc>
<doc no="3">Noch eine Abkürzung BBL.</doc>
<doc no="4">Und hier ECK.</doc>
<doc no="5">Und hier nochmal ECK.</doc>
</documents>
</all>
~~~
Nur leider habe ich noch irgendwo einen Fehler beim index-of. Vielleicht sehen die Geübteren von euch gleich, woran es bei mir hakt. Ich grübel seit gestern abend und finde keine Lösung :(
~~~ HTML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="all">
<xsl:variable name="abbr" select="abbreviations/abbr"/>
<all>
<xsl:for-each select="//doc">
<xsl:variable name="actdoc" select="."/>
<xsl:if test="fn:contains($actdoc, fn:index-of($abbr, $actdoc))">
<doc>
<xsl:attribute name="no"><xsl:value-of select="@no"/></xsl:attribute>
<xsl:value-of select="$actdoc"/>
</doc>
</xsl:if>
</xsl:for-each>
</all>
</xsl:template>
</xsl:stylesheet>
~~~
Danke schonmal für eure Hilfe!
Viele Grüße
Janine S.
XSL | index-of
bearbeitet von JanineSHallo SelfHTML-Community, hallo Thomas (da du mir in der Vergangenheit schon oft und gut geholfen hast!),
ich möchte mit XSL gerne abprüfen, ob in einer bestimmten Zeichenkette wiederkehrender Elemente eine Abkürzung aus einer Liste auftaucht. Die Quelldatei sieht (stark vereinfacht) in etwa so aus:
~~~ JavaScript
<?xml version="1.0" encoding="UTF-8"?>
<all>
<abbreviations>
<abbr>ABG</abbr>
<abbr>AGI</abbr>
<abbr>BBL</abbr>
<abbr>ECK</abbr>
</abbreviations>
<documents>
<doc no="1">In diesem Doc taucht die Abkürzung ABG auf.</doc>
<doc no="2">Dieses Doc besitzt keine Abkürzung.</doc>
<doc no="3">Noch eine Abkürzung BBL.</doc>
<doc no="4">Und hier ECK.</doc>
<doc no="5">Und hier nochmal ECK.</doc>
</documents>
</all>
~~~
Nur leider habe ich noch irgendwo einen Fehler beim index-of. Vielleicht sehen die Geübteren von euch gleich, woran es bei mir hakt. Ich grübel seit gestern abend und finde keine Lösung :(
~~~ JavaScript
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="all">
<xsl:variable name="abbr" select="abbreviations/abbr"/>
<all>
<xsl:for-each select="//doc">
<xsl:variable name="actdoc" select="."/>
<xsl:if test="fn:contains($actdoc, fn:index-of($abbr, $actdoc))">
<doc>
<xsl:attribute name="no"><xsl:value-of select="@no"/></xsl:attribute>
<xsl:value-of select="$actdoc"/>
</doc>
</xsl:if>
</xsl:for-each>
</all>
</xsl:template>
</xsl:stylesheet>
~~~
Danke schonmal für eure Hilfe!
Viele Grüße
Janine S.
XSL | index-of
bearbeitet von JanineSHallo SelfHTML-Community, hallo Thomas (da du mir in der Vergangenheit schon oft und gut geholfen hast!),
ich möchte mit XSL gerne abprüfen, ob in einer bestimmten Zeichenkette wiederkehrender Elemente eine Abkürzung aus einer Liste auftaucht. Die Quelldatei sieht (stark vereinfacht) in etwa so aus:
~~~ JavaScript
<?xml version="1.0" encoding="UTF-8"?>
<all>
<abbreviations>
<abbr>ABG</abbr>
<abbr>AGI</abbr>
<abbr>BBL</abbr>
<abbr>ECK</abbr>
</abbreviations>
<documents>
<doc no="1">In diesem Doc taucht die Abkürzung ABG auf.</doc>
<doc no="2">Dieses Doc besitzt keine Abkürzung.</doc>
<doc no="3">Noch eine Abkürzung BBL.</doc>
<doc no="4">Und hier ECK.</doc>
<doc no="5">Und hier nochmal ECK.</doc>
</documents>
</all>
~~~
Nur leider habe ich noch irgendwo einen Fehler beim index-of. Vielleicht sehen die Geübteren von euch gleich, woran es bei mir hakt. Ich grübel seit gestern abend und finde keine Lösung :(
~~~ JavaScript
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="all">
<xsl:variable name="abbr" select="abbreviations/abbr"/>
<all>
<xsl:for-each select="//doc">
<xsl:variable name="actdoc" select="."/>
<xsl:if test="index-of($abbr, contains($actdoc,$abbr))">
<doc>
<xsl:attribute name="no"><xsl:value-of select="@no"/></xsl:attribute>
<xsl:value-of select="$actdoc"/>
</doc>
</xsl:if>
</xsl:for-each>
</all>
</xsl:template>
</xsl:stylesheet>
~~~
Danke schonmal für eure Hilfe!
Viele Grüße
Janine S.