Announcement

Collapse
No announcement yet.

for Each Schleife - Alle Auspraegungen eines Elements

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

  • for Each Schleife - Alle Auspraegungen eines Elements

    Hi, haette wieder mal eine Frage zu XSL/XML
    wie selektiert man alle Werte eines Typ, welchen Wert muss der Parameter dann annehmen,

    Folgender Fall:
    <xsl:for-each select="/Collection/DVD[Genre=$genre][AudioFormat/AudioLanguage=$language]">

    die beiden Parameter werden dem Stylesheet
    Welchen Wert muesse diese jeweils haben, damit mal alle Auspraegungen bekommt ?
    Meine Annahme das alle Werte eigentlich ein * sein muessten,
    aber irgendwie funktionert das nicht wirklich

    waere fuer Tipps sehr dankbar
    mfg Michael

  • #2
    Hallo Michael,

    Was Du suchst, ist Genre like $genre, oder so etwas ähnliches. Das gibt's in XPath leider nicht. Es gibt eben nur den "="-Operator und der prüft Gleichheit, absolute Gleichheit.

    Es gibt jetzt drei Möglichkeiten:

    1. Mit xsl:choose prüfen, ob Genre = "*" und dann eben nach /Collection/DVD/... fragen.

    2. Die XPath-Funktionen starts-with oder contains verwenden, etwa:

    /Collection/DVD[starts-with(concat("*", Genre), $genre)]

    Leere Abfrage "*" listet alle, "Thriller" eben nur Thriller

    3. Bin mir nicht sicher, aber die .NET-Implementierung von EXSLT unterstützt die RegEx-Erweiterung: http://www.exslt.org/regexp/index.html

    EXST.NET gibt's unter mvp-xml.sourceforge.net

    Viele Grüße

    Martin
    www.aboutxml.d
    Martin Szugat
    www.aboutxml.de

    Comment


    • #3
      hi, danke schon wieder fuer deine Hilfe

      hm ja Option 1 haette ich mir auch scho nueberlegt, nur as Problem ist, das du dann bei 2 Variablen 4 Abfragen brauchst, bei 3 Variablen ...

      weil bei 2 muss ich pruefen ob entweder genre alles sein soll, oder language alles, oder beide alles, oder beide selekiert...
      und das is auch ned ganz des wahre

      --
      das komische was mich iritiert ist folgendes:
      //Collection/DVD[Genre=*]
      Wenn man diesen Ausdruck im XML Spy xpath editor eingibt funktiert es und liefert mir alle !

      --bloede frage:
      <xsl:choose>
      <xsl:when test="$genre='all' &amp; $language='all'">
      <xsl:call-template name="sortall"/>
      </xsl:when>

      kann man nach 2 sachen ned abragen , und mit escapten & verbinden

      Comment

      Working...
      X