无法放置href链接以使用xslt文件在xml中展开结果
我为xml中的房屋名称列表视图设计了一个xslt文件。当从列表中单击房屋名称时,它应该显示位于同一xml文件中的房屋的完整详细信息。但在我的情况下,它是重定向到另一个地方。有人能帮我吗无法放置href链接以使用xslt文件在xml中展开结果,xml,xslt,xslt-1.0,xslt-2.0,Xml,Xslt,Xslt 1.0,Xslt 2.0,我为xml中的房屋名称列表视图设计了一个xslt文件。当从列表中单击房屋名称时,它应该显示位于同一xml文件中的房屋的完整详细信息。但在我的情况下,它是重定向到另一个地方。有人能帮我吗 <Houses> <search> <id>1</id> <name>horror</name> <address>09, west Road</address>
<Houses>
<search>
<id>1</id>
<name>horror</name>
<address>09, west Road</address>
<city>London</city>
<pcode>se4 7jk</pcode>
<contact>020574110832</contact>
</search>
</Houses>
1.
恐怖
西路09号
伦敦
se4 7jk
020574110832
以及xslt文件的问题部分
<xsl:template match="name">
<xsl:attribute name="href">
<xsl:value-of select="//search/name"/>
</xsl:attribute>
</xsl:template>
我假设您希望为每个名称添加一个链接。在这种情况下,您将需要
<xsl:template match="name">
<a>
<xsl:attribute name="href">
<xsl:text>#</xsl:text><xsl:value-of select="."/>
</xsl:attribute>
<xsl:value-of select="."/>
</a>
</xsl:template>
这将创建类似
编辑
好的,下面是一个带有div元素的表的示例,通过单击按钮可以折叠/展开。很好的布局,我留下来为你做;这只是一个如何使用xslt(包括javascript切换隐藏/显示)创建html的示例
<?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" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>trial</title>
<script type="text/javascript" language="javascript">
//expand and collapse functions based on id
function toggleById(IdStart) {
var divs = document.getElementsByTagName('div');
for (var i=0<xsl:text>;</xsl:text> i<divs.length<xsl:text>;</xsl:text> i++) {
if (divs[i].id.match("^"+IdStart) == IdStart) {
if( divs[i].style.display == "none")
{
divs[i].style.display = "block"
}
else {
divs[i].style.display = "none"
}
}
}
return true;
}
</script>
</head>
<body>
<table border="solid black 1pt;" style="border-collapse:collapse;padding:0;border-spacing:0">
<tr>
<th>house name</th>
<th>details</th>
</tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="name">
<tr>
<td>
<input>
<xsl:attribute name="type">button</xsl:attribute>
<xsl:attribute name="onclick">toggleById('<xsl:value-of select="."/>'); return true;</xsl:attribute>
<xsl:attribute name="onMouseOver">this.style.cursor='hand'</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</input>
</td>
<td>
<div>
<xsl:attribute name="id"><xsl:value-of select="."/></xsl:attribute>
<xsl:attribute name="style">display:none</xsl:attribute>
<xsl:copy-of select=".."/>
</div>
</td>
</tr>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
试验
//基于id的展开和折叠函数
函数toggleById(IdStart){
var divs=document.getElementsByTagName('div');
对于(变量i=0;idivs.length;i++){
如果(divs[i].id.match(“^”+IdStart)==IdStart){
if(divs[i].style.display==“无”)
{
divs[i].style.display=“块”
}
否则{
divs[i].style.display=“无”
}
}
}
返回true;
}
门名
细节
按钮
toggleById(“”);返回true;
此.style.cursor='hand'
显示:无
适用于
<?xml version="1.0" encoding="UTF-8"?>
<Houses>
<search>
<id>1</id>
<name>horror</name>
<address>09, west Road</address>
<city>London</city>
<pcode>se4 7jk</pcode>
<contact>020574110832</contact>
</search>
<search>
<id>2</id>
<name>nice</name>
<address>05, East Road</address>
<city>London</city>
<pcode>po4 3df</pcode>
<contact>none</contact>
</search>
</Houses>
1.
恐怖
西路09号
伦敦
se4 7jk
020574110832
2.
美好的
东路05号
伦敦
po4 3df
没有一个
这给
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>trial</title>
<script type="text/javascript" language="javascript">
//expand and collapse functions based on id
function toggleById(IdStart) {
var divs = document.getElementsByTagName('div');
for (var i=0; i<divs.length; i++) {
if (divs[i].id.match("^"+IdStart) == IdStart) {
if( divs[i].style.display == "none")
{
divs[i].style.display = "block"
}
else {
divs[i].style.display = "none"
}
}
}
return true;
}
</script>
</head>
<body>
<table border="solid black 1pt;" style="border-collapse:collapse;padding:0;border-spacing:0">
<tr>
<th>house name</th>
<th>details</th>
</tr>
<tr>
<td><input type="button" onclick="toggleById('horror'); return true;" onMouseOver="this.style.cursor='hand'" value="horror"></td>
<td>
<div id="horror" style="display:none">
<search>
<id>1</id>
<name>horror</name>
<address>09, west Road</address>
<city>London</city>
<pcode>se4 7jk</pcode>
<contact>020574110832</contact>
</search>
</div>
</td>
</tr>
<tr>
<td><input type="button" onclick="toggleById('nice'); return true;" onMouseOver="this.style.cursor='hand'" value="nice"></td>
<td>
<div id="nice" style="display:none">
<search>
<id>2</id>
<name>nice</name>
<address>05, East Road</address>
<city>London</city>
<pcode>po4 3df</pcode>
<contact>none</contact>
</search>
</div>
</td>
</tr>
</table>
</body>
</html>
试验
//基于id的展开和折叠函数
函数toggleById(IdStart){
var divs=document.getElementsByTagName('div');
对于(var i=0;i考虑通过发布您想要为发布的示例XML输入创建的HTML或XML或纯文本输出来解释您的需求,然后我们可以使用XSLT方法来帮助您实现。Thnx用于您的回复。但是当我单击名称时,它应该展开结果。除非您使用客户端编辑,否则不要链接另一个文件.KabelashSaxon XSLT的ion无法对浏览器中的点击之类的事件做出反应。在其他情况下,您需要将XSLT和Javascript结合起来。为了帮助您,我们首先需要知道您使用的XSLT处理器,以及在哪里使用它(客户端或服务器端)。@Kabelash如果您添加像#horror as id=“horror”这样的锚点在网页中的某个点,光标将跳到该点。如果您希望隐藏和显示内容,则需要执行更多操作;特别是在隐藏内容中添加一个类,在单击链接时切换隐藏/显示,并辅之以一些javascript,如Martin所说。这就是您希望执行的操作吗?