Dear Theun,
The XSLT validation performed by oXygen tries to create a Transformer
object out of the edited XSLT stylesheet. This performs a more powerful
checking of the XSLT document (compared with for instance a validation
against a specific schema) and the XSLT processor used for validation
reports also XPath errors. The XPath content completion that oXygen
offers on XSLT files is strongly related with the fact that the edited
file is an XSLT document. From the associated transformation scenario we
identify the document that can be the input for the stylesheet and we
determine possible elements and attributes from there, we also take into
account the XSLT instruction that change the context in order to offer
correct completion proposals.
As you see in the above description, both the validation and the content
completion cannot be de-coupled from the XSLT editor immediately so the
answer is no, you cannot have XPath validation and XPath content
completion in the XML editor.
However, there are a couple of things you can do.
You can write a stylesheet to extract your XPath expression and generate
as output another stylesheet that contains those XPath expressions
associated eventually with information to easily identify where those
XPath expression were extracted from. Then validate the generated
stylesheet and if you find problems use that identification information
to locate the expression in the original document.
Another possibility is to take advantage of the fact that oXygen
supports XPath 2.0 for Schematron using Saxon 8 and create an XML Schema
with embedded Schematron rule and use the saxon:expression function to
test that a specific value is an XPath expression, you can find below an
example of this approach.
XML Schema with embedded Schematron rules test.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appinfo>
<ns xmlns="http://www.ascc.net/xml/schematron"
uri="http://saxon.sf.net/" prefix="saxon"/>
</xs:appinfo>
</xs:annotation>
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element ref="xpath" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="xpath">
<xs:annotation>
<xs:appinfo>
<pattern xmlns="http://www.ascc.net/xml/schematron"
name="testXPath">
<rule context="xpath">
<assert test="saxon:expression(@expression)">Invalid XPath
expression!</assert>
</rule>
</pattern>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="expression" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<?oxygen SCHSchema="test.xsd"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<xpath expression="test;"/>
<xpath expression="test"/>
<xpath expression="test"/>
</test>
reported error:
SystemID: E:\george\test\p2\test.xml
Description: Static error in XPath expression supplied to
saxon:expression: XPath syntax error at char 4 in {test;}:
Unexpected token ";" beyond end of expression
The problem is that there is no tracing from the error to the source and
all you can do is to get the expression between curly braces in this
case test; and find it in your document.
Hope that helps,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Theun Fleer wrote:
Hello,
When editing XLST-files in oXygen7.2 on WinXP the XPath-expressions in
the "select" and "match" attributes can be validated. When typing an
incorrect XPath-expression, a wavy yellow line is shown, and an error
description at the bottom of the screen; "content completion" is also an
option.
We are currently editing non-XSLT-files: a custom XML format with a
custom namespace in which we must edit a lot of long XPath-expressions.
We would like the same validation options as in the XLST-files... is
this possible, and how?
Kind regards, and keep up the good work!
Theun Fleer
Daidalos BV, The Netherlands
Drs. T. Fleer
Consultant
GSM: +31 (0)6 40 58 50 27
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
www.daidalos.nl
KvK 27164984
De informatie - verzonden in of met dit emailbericht - is afkomstig van
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit
bericht kunnen geen rechten worden ontleend.
_______________________________________________
oXygen-user mailing list
[email protected]
http://www.oxygenxml.com/mailman/listinfo/oxygen-user
_______________________________________________
oXygen-user mailing list
[email protected]
http://www.oxygenxml.com/mailman/listinfo/oxygen-user