# dom4j unberechtigte Invalid XPath expression



## mariomueller (24. Mai 2018)

Hallo zusammen,

ich generiere einen XPATH-Ausdruck, der in XMLSPY wunderbar arbeitet.
XPATH: 
	
	
	
	





```
/M_UTILMD/G_SG2/S_NAD[D_3035='MS']/C_C082/D_3055/text()=('9','293','305','332')
```

Allerdings wirft mir DOM4J eine Exception:

```
Invalid XPath expression: /M_UTILMD/G_SG2/S_NAD[D_3035='MS']/C_C082/D_3055/text()=('9','293','305','332') Expected: )
```
An was könnte das liegen?

Danke, viele Grüße
Mio


----------



## truesoul (24. Mai 2018)

Hallo. 

Ist das der vollständige Stacktrace? 

Grüße


----------



## mariomueller (24. Mai 2018)

nicht ganz, aber der Rest ist wenig nützlich:


```
Exception in thread "main" org.dom4j.InvalidXPathException: Invalid XPath expression: /M_UTILMD/G_SG2/S_NAD[D_3035='MS']/C_C082/D_3055/text()=('9','293','305','332') Expected: )
    at org.dom4j.xpath.DefaultXPath.parse(DefaultXPath.java:355)
    at org.dom4j.xpath.DefaultXPath.<init>(DefaultXPath.java:59)
    at EDIXMLAperakValidation.EDIXMLAperakValidation.loopCustomizingList(EDIXMLAperakValidation.java:224)
    at EDIXMLAperakValidation.EDIXMLAperakValidation.main(EDIXMLAperakValidation.java:80)
```


----------



## mariomueller (24. Mai 2018)

Ich komme der Sache ein Stückchen näher. 
Ich habe mal im oXygen (nicht XMLSPY) von XPATH2.0 auf XPATH1.0 umgestellt und siehe da  -->
Hier kommt nun ein ähnlicher Fehler 

```
Erwartet wurde ), gefunden wurde: ,
```


----------



## mariomueller (24. Mai 2018)

Ich habe einen Beitrag von 2013 gefunden. Hier steht, dass dom4J XPATH 2.0 nicht unterstützt.
Kann das jmd. bestätigen. Das kann ich fast nicht glauben.


----------



## httpdigest (24. Mai 2018)

Sieht fast so aus. Ich habe für die ganzen X...-Sachen (XPath 2.0, XSLT 2.0, XQuery, ...) früher immer gerne Saxon genommen. Doku für Benutzung von XPath: https://www.saxonica.com/html/documentation/xpath-api/s9api-xpath.html


----------



## mariomueller (24. Mai 2018)

ja, saxon kostest aber :-(


----------



## httpdigest (24. Mai 2018)

Es gibt die Home Edition, die XPath 2.0 auch kann, nur keine Schema Validation.
http://saxon.sourceforge.net/#F9.8HE


----------



## mariomueller (24. Mai 2018)

danke, aber wir brauchen es kommerziell


----------



## httpdigest (24. Mai 2018)

mariomueller hat gesagt.:


> danke, aber wir brauchen es kommerziell


Aber da besteht doch mit der Mozilla Public License 2.0 gar kein Konflikt. Du kannst solch lizenzierte Software auch in einem kommerziellen Produkt einsetzen. Vorausgesetzt, du machst die Lizenz und die Sourcen von Saxon (und nur von Saxon) verfügbar mit der Distribution deines Produktes.
https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2)


----------



## mariomueller (25. Mai 2018)

Hi httpdigest,

vielen Dank für Deine Antwort. Ich bin zwar schon jahrelang im Geschäft. Dennoch habe ich erfolgreich geschafft, mich aus den juristischen Dingen rauszuhalten. 
Auf alle Fälle ist das schon mal ein super Hinweis von Dir. 

Ich habe es nun geschafft, einen Workaround zu schreiben. Sollte ich aber nochmal auf eine Anforderung stoßen, die XPATH 2.0 unumgänglich macht, werde ich das an meinen Auftraggeber weitergeben.

Vielen, vielen Dank nochmal. Ich muss mich hier mal schlau machen (Mozilla Public License 2.0 etc)

Viele GRüße
Mario


----------



## mariomueller (29. Mai 2018)

Hi httpdigest,

ich nochmal. Ich habe mir nun die SAXON HE installiert.
Ich suche nun einen Befehlt in SAXON analog zu dom4j.

Ich würde ich freuen, wenn Du Dir mal meinen Post betrachtest:

https://saxonica.plan.io/boards/3/topics/7198?r=7202


Evtl. hast Du eine Lösung?

Danke, Viele Grüße
Mario


----------



## httpdigest (29. Mai 2018)

Du suchst vermutlich hiernach:
- http://www.saxonica.com/html/documentation/javadoc/net/sf/saxon/functions/Path_1.html
- https://www.saxonica.com/html/documentation/functions/fn/path.html

EDIT: Das ist ja übrigens auch die Antwort, die du von dem Autor von Saxon (Michael Kay) bekommen hast: https://saxonica.plan.io/boards/3/topics/7198?r=7201#message-7201


----------

