[Home] [By Thread] [By Date] [Recent Entries]
Thanks to everyone, especially David, Darcy, Dean and Micheal who has
helped me on this. After a few weeks of frustration, I finally got my
head around XSLT a little bit.
This now compiles and works, in a very basic way. The next question I need to resolve regards the "translation" attribute on line 22. I would like this spatial offset to be applied to the <Box Shape> node that follows, AND also to a number of subsequent nodes. In the code fragment below, there is a Text node for example which displays the Artist's Name (there will also be subsequent nodes e.g. <Artist_Year>, <Artist_Details>. Each of these needs to be offset by the same amount as the <Box Shape> node each time another <artist> is found in the XML. Related to this is another question. How could this transform be applied on the horizontal, rather than the vertical axis? Here's what I have: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output media-type="model/x3d=xml" doctype-system="http://www.web3d.org/specifications/x3d-3.2.dtd" method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/"> <X3D profile="Immersive"> <head> <title/> </head> <Scene> <xsl:apply-templates/> </Scene> </X3D> </xsl:template> <xsl:template match="artists"> <Group> <xsl:for-each select="artist"> <Transform translation='.8 4 1'> <xsl:attribute name="translation"><xsl:value-of select="(position() -1 ) * 6"/> </xsl:attribute> <Shape> <Appearance> <xsl:element name="ImageTexture"> <xsl:attribute name="url"> <xsl:value-of select="Artist_Image"/> </xsl:attribute> </xsl:element> <Material containerField='material' ambientIntensity='0.200' shininess='0.200' diffuseColor='1 .50196 0'/> </Appearance> <Box containerField='geometry' size='5 5 0.2'/> </Shape> </Transform> <Transform translation='2.9 2.6 0'> <Shape> <Appearance> <Material containerField='material' ambientIntensity='0.200' shininess='0.200' diffuseColor='1 .50196 0'/> </Appearance> <xsl:element name="Text"> <xsl:attribute name="string"> <xsl:value-of select="Artist_Second_Name"/> </xsl:attribute> </xsl:element> </Shape> </Transform> </xsl:for-each> </Group> </xsl:template> </xsl:stylesheet> And some example XML: <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="XSLT/X3D-XSLT/X3D-XSLT_for_Test_Artist_Group002.xsl"?> <artists> <artist> <Artist_Image>c://apache/htdocs/images/artists/Cunningham.jpg</Artist_Image> <Artist_First_Name>David</Artist_First_Name> <Artist_Second_Name>Cunningham</Artist_Second_Name> <Artist_Year>1954</Artist_Year> <Artist_Country>Ireland</Artist_Country> </artist> <artist> <Artist_Image>c://apache/htdocs/images/artists/Finer.jpg</Artist_Image> <Artist_First_Name>Jem</Artist_First_Name> <Artist_Second_Name>Finer</Artist_Second_Name> <Artist_Year>1955</Artist_Year> <Artist_Country>Ireland</Artist_Country> </artist> </artists> People's comments about the dev environment I'm using have also been taken on board. Is there a general consensus over the suitablility of me using Saxon-B for this project? Thanks for any help. Best Regards Milo
|

Cart



