我是 XSLT 的新手,我正在为我的问题寻求帮助。这是我的 XML 代码:
<?xml version="1.0" encoding="UTF-8"?>
<nadrazi jmeno="Podlešín">
<vlak typ="os" cislo="5112" z="Hostivice" cil="Podlešín" naVlak="53001">
<prijezd>16:20:00</prijezd>
<slozeni>
<vuz cislo="1" oznaceniC="810" />
<vuz cislo="2" oznaceniC="010" oznaceniT="Btax" />
</slozeni>
</vlak>
<vlak typ="os" cislo="53001" z="Podlešín" smer="Zloněves" cil="Kralupy nad Vltavou" zVlaku="5112">
<odjezd>17:00:00</odjezd>
<slozeni>
<vuz cislo="1" oznaceniC="810" />
<vuz cislo="2" oznaceniC="010" oznaceniT="Btax" />
</slozeni>
</vlak>
<vlak typ="sp" cislo="1389" z="Louny" smer="Zloněves" cil="Praha Holešovice">
<prijezd>16:18:00</prijezd>
<odjezd>16:23:00</odjezd>
<slozeni>
<vuz cislo="1" oznaceniC="843" />
<vuz cislo="2" oznaceniT="Btn" />
<vuz cislo="3" oznaceniT="Btn" />
</slozeni>
</vlak>
<vlak typ="r" cislo="572" z="Praha Holešovice" smer="Slaný předměstí" cil="Chomutov">
Nechranice
<prijezd>14:27:00</prijezd>
<odjezd>14:28:00</odjezd>
<slozeni>
<vuz cislo="0" oznaceniC="754" />
<vuz cislo="250" oznaceniT="B" />
<vuz cislo="251" oznaceniT="B" />
<vuz cislo="252" oznaceniT="Bp" />
<vuz cislo="253" oznaceniT="Bp" />
<vuz cislo="254" oznaceniT="BDs" />
<vuz cislo="255" oznaceniT="A" />
</slozeni>
</vlak>
</nadrazi>
我想从所有元素vlak
属性中获取一个smer
值,从这些值中创建一个数组(或一个列表或类似的东西),然后使用类似unique()
函数的东西来让每个重复值只有一个项目。在这种情况下,我的数组中将是“Zloněves”和“Slaný předměstí”。
这是我的 XSLT 代码。我尝试了一些方法来创建一些数组,但我失败并删除了那些行(前一段时间)。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />
<xsl:template match="/">
<html>
<head>
<title>Rozpis vlaků pro stanici <xsl:value-of select="nadrazi/@jmeno" /></title>
</head>
<script type="text/javascript">
function show(element) {
var srcElement = document.getElementById(element);
if(srcElement != null) {
if(srcElement.style.display == "block") {
srcElement.style.display= 'none';
} else {
srcElement.style.display='block';
}
return false;
}
}
</script>
<body>
<h1>Stanice <xsl:value-of select="nadrazi/@jmeno" /></h1>
<xsl:apply-templates select="nadrazi" mode="smer" />
</body>
</html>
</xsl:template>
<xsl:template match="vlak" mode="smer">
<div>
<xsl:attribute name="id"><xsl:value-of select="@smer" /></xsl:attribute>
</div>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
输出将是 HTML 文件,其中数组的项目将是 div 的 id (div id="arrayItem")。现在输出是(时间和空间现在并不重要,但我会欢迎一些帮助(链接等)):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rozpis vlaků pro stanici Podlešín</title>
</head>
<script type="text/javascript">
function show(element) {
var srcElement = document.getElementById(element);
if(srcElement != null) {
if(srcElement.style.display == "block") {
srcElement.style.display= 'none';
} else {
srcElement.style.display='block';
}
return false;
}
}
</script><body>
<h1>Stanice Podlešín</h1>
<div id=""></div>
16:20:00
<div id="Zloněves"></div>
17:00:00
<div id="Zloněves"></div>
16:18:00
16:23:00
<div id="Slaný předměstí"></div>
Nechranice
14:27:00
14:28:00
</body>
</html>
我想要这个:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rozpis vlaků pro stanici Podlešín</title>
</head>
<script type="text/javascript">
function show(element) {
var srcElement = document.getElementById(element);
if(srcElement != null) {
if(srcElement.style.display == "block") {
srcElement.style.display= 'none';
} else {
srcElement.style.display='block';
}
return false;
}
}
</script><body>
<h1>Stanice Podlešín</h1>
<div id="Zloněves"></div>
<div id="Slaný předměstí"></div>
</body>
</html>
在这些 div 中,我将添加更多数据以及使用 Javascript 函数隐藏 div 所需的 id show(id)
。并且所有具有 smer="Zloněves" 的元素将在一个中<div id="Zloněves">
,所有具有 smer="Slaný předměstí" 的元素将在另一个中<div id="Slaný předměstí">
我发现了一些如何制作数组的问题,但没有解决这个问题。感谢帮助。