Announcement

Collapse
No announcement yet.

xsl:if

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

  • xsl:if

    Moin,
    habe ich einer xslt folgendes if gefunden:

    <xsl:if test="/metadata[($any$ (dataIdInfo/idCitation/resTitle/text()))]>

    Was fragt das if ab und was bedeutet das $any$?

    Paul

  • #2
    Wenn du das komplette XSLT-Stylesheet mit einem XSLT-Prozessor lädst, gibt es dann nicht einen Fehlermeldung bezüglich eines Syntaxfehlers? Mit dem $any$ kann ich auch nichts anfangen.

    Comment


    • #3
      Nicht direkt wegen dem any.
      Der IE zeigt das ganze auch ok an. Alle anderen Browser zicken rum.
      Es handelt sich auch um xmlns:xsl="http://www.w3.org/TR/WD-xsl". Hätt ich vielleicht sagen sollen.

      Comment


      • #4
        Bevor XSLT 1.0 ein W3C-Standard wurde (also bevor 1999!) hat Microsoft eine Vorgängerversion (wd, working draft) implementiert, diese Implementierung ist auch heute noch in MSXML 3 bzw. IE vorhanden. Meines Wissens ist diese Sprache aber nicht mehr öffentlich dokumentiert, so dass man nicht nachsehen kann, was das $any$ bedeutet. Eventuell ist es eine Funktion, die testet, ob das Argument existiert. Aber das ist geraten.
        Wenn z.b. die Datei
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="test2010082401Xsl.xml"?>
        <root>
          <foo>test</foo>
        </root>
        wobei das Stylesheet
        Code:
        <xsl:stylesheet
          xmlns:xsl="http://www.w3.org/TR/WD-xsl">
          
          <xsl:template match="/">
            <html>
              <head>
                <title>Test</title>
              </head>
              <body>
                <h1>Test</h1>
                <p>root[$any$(foo)]: <xsl:value-of select="root[$any$(foo)]"/>,
                   root[$any$(bar)]: <xsl:value-of select="root[$any$(bar)]"/>
                
                </p>
              </body>
            </html>
          </xsl:template>
        
        </xsl:stylesheet>
        ist, mit IE lädt, dann wird folgendes ausgegeben:
        Code:
        Test
        root[$any$(foo)]: test, root[$any$(bar)]:
        was nahe legt, das mein Raten eventuell korrekt ist.

        Mit dem Standard XSLT/XPath 1.0 braucht man aber kein "$any$", da kann man einfach
        Code:
        root[foo]
        schreiben, dabei wird dann automatisch ein
        Code:
        root[boolean(foo)]
        ausgef[hrt, und der boolesche Wert einer Knotenmenge foo ist genau dann wahr, wenn die Menge nicht leer ist.

        Comment


        • #5
          Na das hört sich gut an. werd ich gleich ma lausprobieren...

          Comment

          Working...
          X