Subject: [xsl] unfolding compressed equivalents From: "Marie Bilde Rasmussen" <mariebilderas@xxxxxxxxx> Date: Wed, 23 Jan 2008 21:25:36 +0100 |
Hi, I have been struggling with a tricky transformation-problem. Maybe somebody can help me come up with a good xslt-solution. THE BACKGROUND: In dictionary entries, text is very often compressed in order to save space/paper. But these entries can be very hard to read. When publishing a bilingual dictionary online, I would like to unfold each equivalent to all of the equivalents, that are postulated to exist in it's originally compressed structure. AN EXAMPLE: In a Danish-English dictionary, I have this extremely compressed English equivalent(s): "[last] Sunday (or Monday or Tuesday) evening (or night) I was at home" - The use of [square brackets] indicate, that the content can be omitted. - Alternatives to a word - or to a sequence of words - are shown in one (parenthesis), separated by the word "or". - Brackets, parenthesis and or's are of course just presentational. The data are represented in xml like this: <equivalent> <omittable>last</omittable> { } <either>Sunday</either> <or>Monday</or> <or>Tuesday</or> { } <either>evening</either> <or>night</or> { I was at home} </equivalent> I have shown the text content on the top level in {curly braces} The rules about equivalents are (here simplified for the example): - An either-element must be immediately followed by at least one or-element - There can be zero, one or several omittable-elements in an equivalent - There can be zero, one or several either/or-constructions in an equivalent - The equivalents have mixed content The xml-schema fragment describing such a compressable equivalent is as follows: <xs:element name="equivalent"> <xs:complexType mixed ="true"> <xs:choice minOccurs="0" macOccurs="unbounded"> <xs:sequence> <xs:element name="either" type="xs:string"/> <xs:element name="or" macOccurs="unbounded" type="xs:string"/> </xs:sequence> <xs:element name="omittable" type="xs:string"/> </xs:choice> </xs:complexType> </xs:element> THE GOAL: In my online dictionary, I would like to show this same equivalent like this: 1. last Sunday evening I was at home 2. last Sunday night I was at home 3. last Monday evening I was at home 4. last Monday night I was at home 5. last Tuesday evening I was at home 6. last Tuesday night I was at home 7. Sunday evening I was at home 8. Sunday night I was at home 9. Monday evening I was at home 10. Monday night I was at home 11. Tuesday evening I was at home 12. Tuesday night I was at home The resulting underlying xml should thus look like this: <equivalent>last Sunday evening I was at home</equivalent> <equivalent>last Sunday night I was at home</equivalent> <equivalent>last Monday evening I was at home</equivalent> <equivalent>last Monday night I was at home</equivalent> <equivalent>last Tuesday evening I was at home</equivalent> <equivalent>last Tuesday night I was at home</equivalent> <equivalent>Sunday evening I was at home</equivalent> <equivalent>Sunday night I was at home</equivalent> <equivalent>Monday evening I was at home</equivalent> <equivalent>Monday night I was at home</equivalent> <equivalent>Tuesday evening I was at home</equivalent> <equivalent>Tuesday night I was at home</equivalent> Can anyone help me through function-calls and recursions? I am using XSLT 2.0. Best regards, Marie PS The example was chosen for it's structural clarity only - definitely not as an example of lexicographical best-practices ********** Marie Bilde Rasmussen Content architect, MA, BSc Gyldendal Publishers Copenhagen, Denmark marie_bilde@xxxxxxxxxxxx mariebilderas@xxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Select attribute using a , strawks | Thread | Re: [xsl] unfolding compressed equi, Robert Koberg |
Re: [xsl] unparsed-text and analyze, David Carlisle | Date | Re: [xsl] unfolding compressed equi, Robert Koberg |
Month |