Я пытаюсь выполнить XSLT-преобразование автоматически сгенерированного XML-файла. Я упоминаю autogenerated, потому что это означает, что я (скорее всего) не могу изменить структуру XML. В приведенном ниже фрагменте кода я (вручную) добавил одну строку в XML, ссылаясь на мой XSL-файл.
В надежде получить представление таблицы в браузере клиента, загруженном данными из файла XML. Я также открыт для предложений о методах, отличных от XSLT, для этого.
Резюме: Я хочу создать таблицу со столбцами, такими как Год, Глава, Число и Имя. Они находятся в XML-файле под /sparql/results/result
, затем тегом <binding name='Year'><literal>2018</literal></binding>
(и так далее для других имен столбцов). Короче говоря, мне нужно сослаться на таблицу /sparql/results/result/binding[@name='Year']/literal
.
К сожалению, это не работает, как я ожидал. Конечно, прошло около десяти лет с тех пор, как я работал с XSLT, поэтому я могу что-то упустить.
РЕДАКТИРОВАТЬ: я должен уточнить «не работает, как ожидалось», так как «IE11 (извините, работа ...) показывает толькоИсходные данные XML, а не преобразованное представление HTML. Firefox и Edge ведут себя одинаково. Рабочие станции компании не могут обновлять браузер или устанавливать какие-либо надстройки. "
Любая помощь в получении этой возможности наиболее ценится.
Минимальная выборка для data.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="rbv.xsl"?>
<sparql xmlns='http://www.w3.org/2005/sparql-results#'>
<head>
<variable name='Year'/>
<variable name='Chapter'/>
<variable name='Number'/>
<variable name='Name'/>
<variable name='Value'/>
</head>
<results>
<result>
<binding name='Year'>
<literal datatype='http://www.w3.org/2001/XMLSchema#gYear'>2018</literal>
</binding>
<binding name='Number'>
<literal>1</literal>
</binding>
<binding name='Chapter'>
<literal>ABC</literal>
</binding>
<binding name='Value'>
<literal datatype='http://www.w3.org/2001/XMLSchema#decimal'>0</literal>
</binding>
<binding name='Name'>
<literal>foo</literal>
</binding>
</result>
<result>
<binding name='Year'>
<literal datatype='http://www.w3.org/2001/XMLSchema#gYear'>2018</literal>
</binding>
<binding name='Number'>
<literal>13</literal>
</binding>
<binding name='Chapter'>
<literal>XYZ</literal>
</binding>
<binding name='Value'>
<literal datatype='http://www.w3.org/2001/XMLSchema#decimal'>0</literal>
</binding>
<binding name='Name'>
<literal>bar</literal>
</binding>
</result>
</results>
</sparql>
Минимальная выборка для rbv.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Sample RBV tabel</title>
</head>
<body>
<h2>Sample RBV tabel</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Jaar</th>
<th>Hoofdstuk</th>
<th>Artikel</th>
<th>Naam</th>
</tr>
<xsl:for-each select="sparql/results/result">
<tr>
<td><xsl:value-of select="binding[@name='Year']/literal"/></td>
<td><xsl:value-of select="binding[@name='Chapter']/literal"/></td>
<td><xsl:value-of select="binding[@name='Number']/literal"/></td>
<td><xsl:value-of select="binding[@name='Name']/literal"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>