[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
On 01/12/2010 14:46, Manuel Souto Pico wrote:
Re: [xsl] Find inconsistencies: Perl or XSLT?
Subject: Re: [xsl] Find inconsistencies: Perl or XSLT? From: Michael Kay <mike@xxxxxxxxxxxx> Date: Wed, 01 Dec 2010 15:05:42 +0000 |
On 01/12/2010 14:46, Manuel Souto Pico wrote:
Dear all,Something like this:
I need to process some files and I know how to do it in Perl, but as has happened to be the case in the past with other stuff, perhaps there's a (objectively) simpler or more efficient way to do it with XSLT.
I have a file like this
<unit id="1"> <source>blabla</source> <target>plapla</source> </unit> <unit id="2"> <source>bleble</source> <target>pleple</source> </unit> <unit id="3"> <source>bloblo</source> <target>ploplo</source> </unit> <unit id="4"> <source>blabla</source> <target>plapla</source> </unit> <unit id="5"> <source>bleble</source> <target>lolailo</source> </unit>
I think the example is illustrative enough.
The target element contains the translation of the source element, and one same element must always be translated in the same way, but sometimes it's not. So what I'd to do is find two or more units with the same source but with different target (like 2 and 5 in the example, but unlike 1 and 4).
In Perl I would use a XML module (or not) and put the source elements in the keys of a hash and the target elements in their corresponding values. When assigning a new key-value pair, if the key already exists, I compare the values. If they are equal, they pass, else they are flagged and included in the report.
The report in this case would be something like:
The following inconsitencies have been found 2: bleble -> pleple 5: bleble -> lolailo
Is it possible to do this in XSLT? Is it more efficient that doing it in Perl as I was planning to? I knowledge of XSLT is very limited and I can't see beyond transforming a XML file into another XML file.
Thanks a lot for your opinion. Manuel
<xsl:for-each-group select="unit" group-by="source"> <xsl:if test="count(distinct-values(current-group()/target)) gt 1"> <conflicts-for source="{current-grouping-key()}"> <xsl:value-of select="distinct-values(current-group()/target)"/> </conflicts> </xsl:if> </xsl:for-each-group>
Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Find inconsistencies: Per, Martin Honnen | Thread | Re: [xsl] Find inconsistencies: Per, Hermann Stamm-Wilbra |
Re: [xsl] Find inconsistencies: Per, Martin Honnen | Date | [xsl] XSL-List Guidelines, Mulberry Technologie |
Month |