#xml #xslt
#xml #xslt
Вопрос:
Я пытался печатать только «argento» с помощью <xsl:value-of select=».» /> но он также печатает значения дочерних элементов, чего я пытаюсь избежать, поскольку в основном мне нужно только первое слово.
это XML-документ, который у меня есть
<elenco-metalli>
<metallo id='1'>
argento
<simbolo>
Ag
</simbolo>
<etimologia>
dal latino: Argentum
</etimologia>
<tipo comune='no'>
<definizione>
numero atomico 47
</definizione>
<definizione informale='s'>
L'argento è un metallo di transizione tenero, bianco e lucido; l'argento è il migliore ...
</definizione>
</tipo>
</metallo>
я должен упомянуть, что я не могу изменить XML или шаблон
Это то, что я пробовал, наряду с другими запросами XPATH, такими как tring, чтобы получить первый элемент с помощью [.], но это либо печатает только первый элемент, либо буквально делает всю страницу пустой
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="elenco-metalli">
<html>
<head>
<title>Elenco dei metalli piu comuni</title>
</head>
<body>
<table>
<xsl:for-each select="metallo">
<xsl:sort select="./@id" data-type="number" />
<tr>
<th colspan="2"><xsl:value-of select="." /></th>
</tr>
<tr>
<td>Etimologia:</td>
<td><xsl:value-of select="definizione" /><xsl:value-of select="etimologia" /></td>
</tr>
<tr>
<td>Definizione: <xsl:value-of select="definizione" /></td>
<td>
<ul>
<xsl:for-each select="definizione">
<li>
<xsl:value-of select="definizione" />
</li>
</xsl:for-each>
</ul>
</td>
</tr>
<tr>
<td id="spacer" colspan="2"></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
я искал везде в Интернете, но безуспешно, возможно, я задавал неправильные вопросы, но я даже не уверен, какие из них будут правильными
Ответ №1:
Ваша инструкция:
<xsl:value-of select="." />
возвращает содержимое всех дочерних текстовых узлов текущего metallo
. Если вам нужен только первый дочерний текстовый узел, измените его на:
<xsl:value-of select="text()[1]" />