[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Arbitrary XML document merge and styling with XSLT
Mike, That sounds like an interesting approach. Can you give me a code snippet of how it might look? Thanks Scott --- Mike Haarman <mhaarman@xxxxxxxxxxxxxxxxxx> wrote: > Scott, > > You could use import precedence to manage this > requirement. Let your main XSL > file be a driver which imports the desired template > behavior based on the value > of mode. > > Mike > > ----- Original Message ----- > From: "Scott Powell" <scotthpowell@xxxxxxxxx> > To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx> > Sent: Wednesday, July 16, 2003 10:23 AM > Subject: Arbitrary XML document merge and > styling with XSLT > > > > Thanks for all the advice on the site for merging > > multiple XML documents into one. > > > > In all of the samples I've seen, the merging XSLT > file > > applies the same templates to all source nodes. > What > > if you want different styles applied to nodes with > the > > same name from the two documents? > > > > Let's say page.xml lists all the xml files to > merge > > (see below); the mode node indicates which > template > > mode to use in the transformation file. Page.xsl > > contains the transformation instructions, making > the > > appropriate document() calls as needed. > > > > But I've discovered that apply-templates' mode="" > > value must be a constant. All my efforts to use > the > > mode value from page.xml have fallen over. > > > > Is there a way to do this sort of "generic" merge > > within a single xsl file without hard-coding the > match > > logic or using xsl:if's? > > > > Can name spaces help me here some how? > > > > Of would I be better off handling this within an > ASP > > script? ASP could read page.xml and then call a > > series of transforms based on the <element> nodes? > > > > Thanks for your advice and help.... > > > > Scott > > > > > ====================================================== > > page.xml (contains a list of xml files to merge > along > > with a MODE element I'd like to use to dictate > which > > templates should be applied in the page.xsl file) > > > ====================================================== > > <?xml version="1.0" encoding="UTF-8"?> > > <page> > > <element> > > <mode>main</mode> > > <file>main_menu.xml</file> > > </element> > > <element> > > <mode>left</mode> > > <file>left_menu.xml</file> > > </element> > > </page> > > > > > > > ====================================================== > > page.xsl (Attempts to load each file in page.xml > and > > apply-templates. But I'd like to differentiate > which > > templates are used for nodes with the same name > where > > I want different styling) > > > ====================================================== > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet version="1.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output method="html"/> > > <xsl:template match="page"> > > <xsl:for-each select="element"> > > <xsl:apply-templates select="document(file)" > > mode="**** I would like to use the MODE value in > the > > file but all attempts to use a variable here are > > rejected ****"></xsl:apply-templates> > > </xsl:for-each> > > </xsl:template> > > > > > > <xsl:template match="menu" mode="main"> > > <!-- formatting code --> > > </xsl:template> > > > > <xsl:template match="menu" mode="left"> > > <!-- formatting code --> > > </xsl:template> > > > > > > > > > ====================================================== > > left_menu.xml (contains a list of graphic refs for > a > > navigation menu) > > > ====================================================== > > <?xml version="1.0" encoding="UTF-8"?> > > <!DOCTYPE menu SYSTEM "menu.dtd"> > > <menu name="weddings"> > > <item name="weddings_menu_how" href="index.htm"> > > <icon> > > <iconOn width="101" > > height="18">weddings_menu_how.gif</iconOn> > > <iconOff width="101" > > height="18">weddings_menu_how_f2.gif</iconOff> > > <alt>how & why</alt> > > </icon> > > </item> > > </menu> > > > > > ===================================================== > > main_menu.xml (contains a simple list of links and > > labels for a top nav bar) > > > ===================================================== > > <?xml version="1.0" encoding="UTF-8"?> > > <!DOCTYPE menu SYSTEM "menu.dtd"> > > <menu> > > <item href="index.htm"> > > <label>home</label> > > </item> > > <item href="../tours/subpage.asp"> > > <label>travel & tours</label> > > </item> > > </menu> > > > > > > > > __________________________________ > > Do you Yahoo!? > > SBC Yahoo! DSL - Now only $29.95 per month! > > http://sbc.yahoo.com > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|