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