|
Subject: [xsl] How to do macro substitution in XPath? From: "Roger L Costello costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sat, 2 Dec 2023 15:35:56 -0000 |
Hi Folks,
I am converting prose like this:
If the title = "Path to Power" and the author = "Robert A. Caro" (Lyndon
Baines Johnson (LBJ)), then
process LBJ as follows
action 1
If the title = "Power Broker" and the author = "Robert A. Caro" (Robert Moses
(RM)), then
process RM as follows
action 2
Neither LBJ nor RM
action 3
I need the XPath to be as like the prose as possible.
Suppose the XPath will operate on XML documents like this:
<Book>
<Title>Path to Power</Title>
<Author>Robert A. Caro</Author>
</Book>
Below is one approach to writing the XPath. See the XPath in the xsl:value-of
element. Notice the use of XML ENTITIES.
The advantage of that approach is the XPath looks like the prose.
The disadvantage with that approach is that ENTITIES are not XPath. I need to
stick with pure XPath. What XPath do you recommend?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet[
<!ENTITY LBJ "((/Book/Title eq 'Path to Power') and (/Book/Author eq
'Robert A. Caro'))">
<!ENTITY RM "((/Book/Title eq 'Power Broker') and (/Book/Author eq 'Robert
A. Caro'))">
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0">
<xsl:template match="/">
<xsl:value-of select="
if &LBJ; then
'action 1'
else if &RM; then
'action 2'
else if (not((&LBJ;) or (&RM;))) then
'action 3'
else
'Error'
"/>
</xsl:template>
</xsl:stylesheet>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] XSL-List Guidelines, B Tommie Usdin btusd | Thread | Re: [xsl] How to do macro substitut, Martin Honnen martin |
| [xsl] XSL-List Guidelines, B Tommie Usdin btusd | Date | Re: [xsl] How to do macro substitut, Martin Honnen martin |
| Month |