将数据从xml doc插入xsl

时间:2012-12-10 20:23:29

标签: html xml xslt

我是使用XSL和XML的初学者。我从XML文档中获取数据并在XSL中使用它时遇到问题。目前我正在尝试不同的方法,但似乎无法做到正确,我将需要使用这种技术来完成项目。一旦我能够完成一个,我将能够在整个页面中完成。

以下是我的XML和我的XSL文档中的示例:

<storelocator> 
    <!--Parent element containing all text on the page-->
    <content_text> 
        <title>
            <titlename>Store Locator</titlename> 
        </title>
        <title>
            <subtitle>FIND A STORE</subtitle>
        </title>
        <title>
            <countrydropdown>Country</countrydropdown>
        </title>
        <title>
            <address>Steet Address, City, Sate/Province OR Postal/Zip Code</address>
        </title>
        <title>
            <radiusdropdown>Radius</radiusdropdown>
        </title>
        <title>
            <featuredstore>FEATURED STORE</featuredstore>
        </title>
        <title>
            <storelocation>Newbury Street, Boston, MA USA</storelocation>
        </title>
</storelocator>

这是XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body bgcolor="white">

<div id="container" style="100%">

<div id="header" style="background: url('header.png'); height:30px;"></div>

<div id="content_container" align="center" style="text-transform: uppercase; font-family: tahoma; font-weight: normal; font-size: 0.8em">
    <div id="content" align="left" style="background-color:blue;height:845px;width:848px">

   <xsl:value-of select="titlename"/> <!--here I was trying to import the text from XML DOC-->

<br/>
<br/>
<br/>
    <img src="image.png" align="left"/><br/>
<br/>
<br/>
<br/>
<br/>

</div>
</div>

<div id="footer" style="background-color:black;clear:both;text-align:center;height:20px"></div>
</div>
</body>
</html>

</xsl:template>
</xsl:stylesheet>

基本上我要做的是导入“商店定位器”标题,使其显示在图像上方,但当前在浏览器中打开时没有任何内容显示。我非常感谢一些帮助,因为我一直试图这样做。

1 个答案:

答案 0 :(得分:2)

在XSLT中要记住的最重要的事情之一是所有路径都将基于上下文。在您的示例中,上下文为/,因为在您的模板中,您匹配/。您无法直接从/转到titlename

尝试将xsl:value-of更改为:

<xsl:value-of select="storelocator/content_text/title/titlename"/>

此外,XSLT不是“导入”您的XML;它正在改变它。如果你只是在浏览器中打开XSLT,这是行不通的。要在打开XML时使转换在浏览器中工作,您必须添加指向XSLT的处理指令:

<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<storelocator> 
...
</storelocator>