This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Building cross-referenced texts with XSLT


Hello,

I've got a large database (roughly 1MB) which contains comics,
stories and characters by Stan Sakai. Here is an example:

    <characters>
        <character id="atsuko">
            <name></name>
            <prename>Atsuko</prename>
            <first-story ref="frost-and-fire"/>
            <first-issue ref="uy-vol1-nr19"/>
            <death ref="frost-and-fire"/>
            <caste>Peasant</caste>
            <profession></profession>
            <fight-prof></fight-prof>
            <weapon></weapon>
            <anthro>Feline</anthro>
            <clan>Geishu</clan>
            <quote></quote>
            <img url="$TOP/uywho/atsuko.gif"
                icon="$TOP/uywho/icon/atsuko.gif"
            />
            <note>"<em>Atsuko</em>" means Hot Child</note>
            <profile>

<p>A peasant girl who possessed swords belonging to a Samurai named &Nagao;.
&Nagao; and Atsuko were in love and had planned to commit lovers suicide
before &Nagao; was killed by Atsuko's brother for money.</p>

<p>Unaware of this, Atsuko kept the swords as a memento of her lost love.
&Usagi;, hired by &Nagao;'s widow - Lady <char-link ref="lady-koriko"/>, to
retrieve the swords, offered to pay for the return of the swords. Atsuko
refused and &Usagi; left. Atsuko and her brother argued about the swords,
her brother trying to take them by force, accidentally killing her.</p>

            </profile>
        </character>

As you can see, the text contains lots of entities which are defined
like this:

<!ENTITY Nagao '<char-link ref="nagao">Nagao</char-link>'>
<!ENTITY LadyAsano '<char-link ref="asano">Lady Asano</char-link>'>

How can I write a script that converts "Lady Asano" into &LadyAsano;
and "Nagao" into &Nagao; but which leaves &Nagao; (or the expanded
entity) alone?

Note that preserving the entities is not a problem; I can easily
convert the expanded form back into the entity notation should I
have to. But how do I transform char content in specific elements
while not doing it in other elements?

How do I make sure that "Lady Asano" is transformed into &LadyAsano;
while "Asano" is transformed into &Asano; while
"<char-link ref="asano">Lady Asano</char-link>" should be left alone?
Note that I have about 2-300 entities to check.

Also, I would like to suppress the expansion of "Atsuko" inside
of her description.

And the original layout (whitespace) should be preserved (ie.
I don't want "hired by &Nagao;" become "hired by&Nagao;").

Any ideas?

-- 
==============================================
Sowatec AG,       CH-8330 Pfäffikon (ZH)
Witzbergstr. 7,   http://www.sowatec.com
Tel: +41-(0)1-952 55 55
Fax: +41-(0)1-952 55 66
----------------------------------------------
Aaron "Optimizer" Digulla, digulla@sowatec.com
==============================================

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]