Я только начал изучать XML & XSLT и задать короткий вопрос относительно Xpath.XSLT Xpath wildcard
Вот код XML:
<root>
<shop>
<person>
<employee>
<name> Alexis </name>
<role> Manager </role>
<task> Sales </task>
</employee>
</person>
</shop>
<person>
<employee>
<role> Supervisor </role>
<name> Blake </name>
<task> Control </task>
</employee>
</person>
</root>
и вот код XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<html><head></head>
<body><xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="shop">
<xsl:apply-templates select="/root/*/*"/>
</xsl:template>
<xsl:template match="employee">
<u> <xsl:apply-templates select="name"/> </u>
(Task: <xsl:apply-templates select="task"/>)
<br></br>
</xsl:template>
<xsl:template match="person2">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
Выход:
Alexis (Task: Sales)
Blake (Task: Control)
Blake (Task: Control)
Я не понимаю, почему последняя часть дублируется? Я знаю, что это из-за этой части кода XSLT:
<xsl:apply-templates select="/root/*/*"/>
, но это только потому, что я был возиться с кодом и отображением его в Firefox. Однако я не понимаю, почему.
Из того, что я понимаю, это выбрать все элементы внукам «корень», например, так:
корень/магазин/чел
но почему не повторяется Алексис, а? Только Blake повторяется ...
+1 Nice объяснение и альтернативные таблицы стилей. –
Большое спасибо за ваш ответ! Я не пытаюсь показать, что это только сотрудники или что-то еще, это просто вопрос экзамена, который я хочу понять. Я понимаю, как вы получите: /корень/магазин/человек и/корень/лицо/работник но поскольку работник является потомком человека для этой части: /корень/магазин/человек/работник то почему не является ли Алексис частью дублированного выхода? Кроме того, что именно это делает */* ?? – shadowz1337
Я расширил свой ответ, надеюсь, попробуем и объясню немного больше, и что означает '*/*'. –