Announcement

Collapse
No announcement yet.

contains und not(contains)

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

  • contains und not(contains)

    Hallo,

    Code:
    //a[not(contains(@href, "single") )]/@href  | //a[not(contains(@href, "double") )]/@href
    Der Code soll mir alle Urls zürückgeben die nicht "single" und nicht "double" enthalten

    Jedoch bekomme ich die Urls zurück, die entweder nicht "single" oder nicht "double" enthalten.

    Also alle.


    Wie kann ich die Query abändern, dass es funktioniert?
    Zuletzt editiert von nebben; 26.06.2011, 13:46. Reason: Irrtum

  • #2
    Es geht im Grunde nur um den Operator | dazwischen

    Comment


    • #3
      Würde aus der ersten Bedingung das not entfernen und die Bedingungen mit und verknüpfen
      Christian

      Comment


      • #4
        Sorry, ich meine die Urls die weder "single" noch "double" enthalten.

        Wie verknüpfe ich mit UND?

        Comment


        • #5
          Schon mal and probiert....

          http://www.w3schools.com/xpath/xpath_operators.asp
          Christian

          Comment


          • #6
            Ja hab ich, aber wie gesagt: mit der query von oben bekomme mit | eine Oderverknüpfung

            Comment


            • #7
              dann wohl mit &
              Christian

              Comment


              • #8
                mit & gibts einen Xpath-Fehler

                Comment


                • #9
                  Code:
                  //a[not(contains(@href, "single")) and not(contains(@href, "double"))]/@href
                  selektiert die "a"-Elemente, deren "href"-Attribut weder "single" noch "double" enthält.

                  Comment


                  • #10
                    Danke, so gehts

                    Comment


                    • #11
                      Replace Syntax

                      Code:
                      replace(string(//a[contains(@href, "single")]/@href), "single", "double")

                      Der Code verursacht einen Fehler.

                      was muss man ändern, damit bei allen Strings, die "single" enthalten, das "single" mit "double" ersetzt wird?

                      Comment


                      • #12
                        Code:
                        //a[contains(@href, "single")]/@href/replace(., "single", "double")
                        ist möglich, ergibt einfach eine Sequenz von Zeichenketten. Oder willst du die Attributwerte selbst verändern?

                        Comment


                        • #13
                          Dein Code gibt mir auch einen Fehler.

                          Mit

                          Code:
                          //a[contains(@href, "single")]/@href
                          bekomme ich

                          http://www.single.de

                          und ich würde gerne dies in http://www.double.de ändern.

                          Deshalb dachte ich, man würde http://www.single.de in einen String verwandeln und dann mit Replace "single" in "double" wechseln

                          Oder wie geht das sonst?

                          Comment


                          • #14
                            Welchen XPath oder XQuery-Prozessor verwendest du? Welche Fehlermeldung genau erhälst du?
                            Mit dem Code
                            Code:
                            let $doc := <root>
                              <a href="single.html">a</a>
                              <a href="onesingle.html">a</a>
                            </root>
                            return $doc//a[contains(@href, "single")]/@href/replace(., "single", "double")
                            erhalte ich z.b. mit http://try.zorba-xquery.com/ das Resultat
                            Code:
                            <?xml version="1.0" encoding="UTF-8"?>
                            double.html onedouble.html
                            und sicher keinen Fehler.

                            Comment

                            Working...
                            X