Quantcast

Performance of patterns containing an abolute xpath expressions

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Performance of patterns containing an abolute xpath expressions

Patrik.Stellmann

Hi,

 

I have some template that contain an absolute xpath exression like this one:

            <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
                       
<!-- do something --!>
           
</xsl:template>

 

When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is tested for every node of the input xml tree – although the class attribute of the root element already does not match so the pattern can match for no descending element at all.

 

Is there any way to make this more efficient just by tweaking the pattern?

 

The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is not an option without modifying Schematron.

 

Thanks and regards,

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: +49 40 33449-1142
Fax: +49 40 33449-1400
E-Mail: [hidden email]


GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Performance of patterns containing an abolute xpath expressions

Andrew Welch
Hi,

How about creating a global variable:

<xsl:variable name="is-myTopic" select="/*[contains(@class, ' custom-domain/myTopic ')]"/>

...and then using that in your match patterns:

<xsl:template match="*[$is-myTopic][contains(@class, ' custom-domain/myElement ')]">

cheers
andrew


On 10 February 2017 at 14:34, Dr. Patrik Stellmann <[hidden email]> wrote:

Hi,

 

I have some template that contain an absolute xpath exression like this one:

            <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
                       
<!-- do something --!>
           
</xsl:template>

 

When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is tested for every node of the input xml tree – although the class attribute of the root element already does not match so the pattern can match for no descending element at all.

 

Is there any way to make this more efficient just by tweaking the pattern?

 

The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is not an option without modifying Schematron.

 

Thanks and regards,

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: <a href="tel:+49%2040%20334491142" value="+4940334491142" target="_blank">+49 40 33449-1142
Fax: <a href="tel:+49%2040%20334491400" value="+4940334491400" target="_blank">+49 40 33449-1400
E-Mail: [hidden email]


GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help



--

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Performance of patterns containing an abolute xpath expressions

Patrik.Stellmann

Thanks for that hint. Indeed, using a global variable reduced the execution time a lot: for my test-case from 11.8s to 7.7s. But by removing this template completely it takes only 1.3s. So there is still great potential of optimization!? But I understand that there is hardly any way around testing it on any apply-templates again without using modes…

 

Patrik

 


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: +49 40 33449-1142
Fax: +49 40 33449-1400
E-Mail: [hidden email]


Von:
Andrew Welch [mailto:[hidden email]]
Gesendet: Freitag, 10. Februar 2017 16:39
An: Mailing list for the SAXON XSLT and XQuery processor <[hidden email]>
Betreff: Re: [saxon] Performance of patterns containing an abolute xpath expressions

 

Hi,

 

How about creating a global variable:

 

<xsl:variable name="is-myTopic" select="/*[contains(@class, ' custom-domain/myTopic ')]"/>

 

...and then using that in your match patterns:

 

<xsl:template match="*[$is-myTopic][contains(@class, ' custom-domain/myElement ')]">

 

cheers

andrew

 

 

On 10 February 2017 at 14:34, Dr. Patrik Stellmann <[hidden email]> wrote:

Hi,

 

I have some template that contain an absolute xpath exression like this one:

            <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
                       
<!-- do something --!>
           
</xsl:template>

 

When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is tested for every node of the input xml tree – although the class attribute of the root element already does not match so the pattern can match for no descending element at all.

 

Is there any way to make this more efficient just by tweaking the pattern?

 

The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is not an option without modifying Schematron.

 

Thanks and regards,

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: <a href="tel:&#43;49%2040%20334491142" target="_blank"> +49 40 33449-1142
Fax: <a href="tel:&#43;49%2040%20334491400" target="_blank"> +49 40 33449-1400
E-Mail: [hidden email]

GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help



 

--

GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Performance of patterns containing an abolute xpath expressions

Michael Kay
In reply to this post by Andrew Welch
First observation is that this isn't equivalent, except in the special case where you are applying templates to nodes in the principal source document. The $is-myTopic global variable is testing a property of the principal source document, while the predicate PPPP in match="/*[PPPP]//*[QQQQ] is testing a property of the document you are currently processing.

So it might work for you, but it's not a general solution.

Michael Kay
Saxonica

On 10 Feb 2017, at 15:39, Andrew Welch <[hidden email]> wrote:

Hi,

How about creating a global variable:

<xsl:variable name="is-myTopic" select="/*[contains(@class, ' custom-domain/myTopic ')]"/>

...and then using that in your match patterns:

<xsl:template match="*[$is-myTopic][contains(@class, ' custom-domain/myElement ')]">

cheers
andrew


On 10 February 2017 at 14:34, Dr. Patrik Stellmann <[hidden email]> wrote:

Hi,

 

I have some template that contain an absolute xpath exression like this one:

            <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
                       
<!-- do something --!>
           
</xsl:template>

 

When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is tested for every node of the input xml tree – although the class attribute of the root element already does not match so the pattern can match for no descending element at all.

 

Is there any way to make this more efficient just by tweaking the pattern?

 

The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is not an option without modifying Schematron.

 

Thanks and regards,

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: <a href="tel:+49%2040%20334491142" value="+4940334491142" target="_blank" class="">+49 40 33449-1142
Fax: <a href="tel:+49%2040%20334491400" value="+4940334491400" target="_blank" class="">+49 40 33449-1400
E-Mail: [hidden email]



GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help



--
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Performance of patterns containing an abolute xpath expressions

Michael Kay
In reply to this post by Patrik.Stellmann
John Lumley presented a paper at XML London 2015 on the optimization of complex patterns, including these DITA-like patterns. A fair bit of the resulting machinery actually found its way into Saxon 9.7, but in a rather experimental form, disabled by default and not well documented. I've been trying to rewrite it in a more productised form for Saxon 9.8.

The optimization we've been trying to implement is this: if you're applying templates to a node, and many of the patterns that could potentially match the node include the same necessary-precondition ancestor::*[*[contains(@class, ' custom-domain/myTopic ')], can we avoid evaluating that sub-pattern repeatedly? I think the answer for Saxon 9.8 will be, yes, we can.

But that's not the question you are asking. What you are asking is, given that we know this subpattern doesn't match for one particular node, can we somehow take it as read that it doesn't match for other, related nodes? That's a much tougher nut to crack. I don't think any kind of automatic optimization is going to achieve that.

Andrew Welch suggested a global variable, which works if you have a single source document. A solution that also works if you have multiple source documents is to use a memo function:

>  <xsl:template match="/*[f:is-my-topic(.)]//*[contains(@class, ' custom-domain/myElement ')]">
>                         <!-- do something --!>
>             </xsl:template>

<xsl:function name="f:is-my-topic" as="xs:boolean" cache="yes">
  <xsl:param name="n" as="element()"/>
  <xsl:sequence select="contains($n/@class, ' custom-domain/myTopic ')"/>
</xsl:function>

With a match pattern of the form A[Q]//B[P] Saxon tries to make an intelligent decision whether to evaluate A[Q] or P first. Experience suggests that getting this decision (the order of evaluation) right can make a big difference. The general approach is to assume that both A and P are equally like to cause the pattern to fail to match, and that it's best to evaluate whichever is cheaper first. The cost estimate is a very crude calculation, but it's often good enough. (For example, it's probably good enough to ensure in this case that we test "is this a child of the document root" before testing "does the @class attribute contain 'myTopic'"). The assumption that both are equally like to cause a mismatch is much more questionable, especially as some people include a parent or ancestor condition that's 100% redundant.

Michael Kay
Saxonica

> On 10 Feb 2017, at 14:34, Dr. Patrik Stellmann <[hidden email]> wrote:
>
> Hi,
>
>  
>
> I have some template that contain an absolute xpath exression like this one:
>
>             <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
>                         <!-- do something --!>
>             </xsl:template>
>
>  
>
> When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is for no descending element at all.
>
>  
>
> Is there any way to make this more efficient just by tweaking the pattern?
>
>  
>
> The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is notan option without modifying Schematron.
>
>  
>
> Thanks and regards,
>
> Patrik
>
>
> ------------------------------------------------------------------
> Systemarchitektur & IT-Projekte
> Tel: +49 40 33449-1142
> Fax: +49 40 33449-1400
> E-Mail: [hidden email]
>
>
>
> GDV Dienstleistungs-GmbH & Co. KG
> Glockengießerwall 1
> D-20095 Hamburg
> www.gdv-dl.de
>
> Sitz und Registergericht: Hamburg
> HRA 93 894
> USt.-IdNr : DE 205183123
>
> Komplementärin:
> GDV Beteiligungsgesellschaft mbH
> Sitz und Registergericht: Hamburg
> HRB 71 153
>
> Geschäftsführer:
> Dr. Jens Bartenwerfer
> Michael Bathke
>
> ------------------------------------------------------------------
> Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.
>
> This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot_______________________________________________
> saxon-help mailing list archived at http://saxon.markmail.org/
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/saxon-help


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Performance of patterns containing an abolute xpath expressions

Patrik.Stellmann
Thanks a lot for your thoughts, Michael.

Since I'm using the Saxon embedded into oXygen I'm currently stuck to 9.6. But with oXygen 19.0 this will change. So I' will see if the performance will change.

Since my use-case is a Schematron validation I will always have only a single source document. So using a global variable (or actually a set of them) should work fine. Nevertheless I'm going to experiment with memo functions as well.

My latest (so far purely theoretical) approach is to modify skeleton to create optimized XSLT with different modes. So for this simplified scenario it will first check if the variable $is-myTopic is true and only then perform the apply-templates for the corresponding mode without checking this variable again on every node.

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: +49 40 33449-1142
Fax: +49 40 33449-1400
E-Mail: mailto:[hidden email]

-----Ursprüngliche Nachricht-----
Von: Michael Kay [mailto:[hidden email]]
Gesendet: Samstag, 11. Februar 2017 20:05
An: Mailing list for the SAXON XSLT and XQuery processor <[hidden email]>
Betreff: Re: [saxon] Performance of patterns containing an abolute xpath expressions

John Lumley presented a paper at XML London 2015 on the optimization of complex patterns, including these DITA-like patterns. A fair bit of the resulting machinery actually found its way into Saxon 9.7, but in a rather experimental form, disabled by default and not well documented. I've been trying to rewrite it in a more productised form for Saxon 9.8.

The optimization we've been trying to implement is this: if you're applying templates to a node, and many of the patterns that could potentially match the node include the same necessary-precondition ancestor::*[*[contains(@class, ' custom-domain/myTopic ')], can we avoid evaluating that sub-pattern repeatedly? I think the answer for Saxon 9.8 will be, yes, we can.

But that's not the question you are asking. What you are asking is, given that we know this subpattern doesn't match for one particular node, can we somehow take it as read that it doesn't match for other, related nodes? That's a much tougher nut to crack. I don't think any kind of automatic optimization is going to achieve that.

Andrew Welch suggested a global variable, which works if you have a single source document. A solution that also works if you have multiple source documents is to use a memo function:

>  <xsl:template match="/*[f:is-my-topic(.)]//*[contains(@class, ' custom-domain/myElement ')]">
>                         <!-- do something --!>
>             </xsl:template>

<xsl:function name="f:is-my-topic" as="xs:boolean" cache="yes">
  <xsl:param name="n" as="element()"/>
  <xsl:sequence select="contains($n/@class, ' custom-domain/myTopic ')"/> </xsl:function>

With a match pattern of the form A[Q]//B[P] Saxon tries to make an intelligent decision whether to evaluate A[Q] or P first. Experience suggests that getting this decision (the order of evaluation) right can make a big difference. The general approach is to assume that both A and P are equally like to cause the pattern to fail to match, and that it's best to evaluate whichever is cheaper first. The cost estimate is a very crude calculation, but it's often good enough. (For example, it's probably good enough to ensure in this case that we test "is this a child of the document root" before testing "does the @class attribute contain 'myTopic'"). The assumption that both are equally like to cause a mismatch is much more questionable, especially as some people include a parent or ancestor condition that's 100% redundant.

Michael Kay
Saxonica

> On 10 Feb 2017, at 14:34, Dr. Patrik Stellmann <[hidden email]> wrote:
>
> Hi,
>
>
>
> I have some template that contain an absolute xpath exression like this one:
>
>             <xsl:template match="/*[contains(@class, ' custom-domain/myTopic ')]//*[contains(@class, ' custom-domain/myElement ')]">
>                         <!-- do something --!>
>             </xsl:template>
>
>
>
> When processing an xml tree recursively (e.g. using on-no-match=”shallow-skip”) it seems (from my performance tests) that this pattern is for no descending element at all.
>
>
>
> Is there any way to make this more efficient just by tweaking the pattern?
>
>
>
> The background is the processing of different DITA files with the same stylesheet generated from schematron. So using different modes is notan option without modifying Schematron.
>
>
>
> Thanks and regards,
>
> Patrik
>
>
> ------------------------------------------------------------------
> Systemarchitektur & IT-Projekte
> Tel: +49 40 33449-1142
> Fax: +49 40 33449-1400
> E-Mail: [hidden email]
>
>
>
> GDV Dienstleistungs-GmbH & Co. KG
> Glockengießerwall 1
> D-20095 Hamburg
> www.gdv-dl.de
>
> Sitz und Registergericht: Hamburg
> HRA 93 894
> USt.-IdNr : DE 205183123
>
> Komplementärin:
> GDV Beteiligungsgesellschaft mbH
> Sitz und Registergericht: Hamburg
> HRB 71 153
>
> Geschäftsführer:
> Dr. Jens Bartenwerfer
> Michael Bathke
>
> ------------------------------------------------------------------
> Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.
>
> This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
>
> ----------------------------------------------------------------------
> -------- Check out the vibrant tech community on one of the world's
> most engaging tech sites, SlashDot.org!
> http://sdm.link/slashdot______________________________________________
> _ saxon-help mailing list archived at http://saxon.markmail.org/
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/saxon-help


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/ [hidden email] https://lists.sourceforge.net/lists/listinfo/saxon-help

GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[hidden email]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
Loading...