Учитывая этот XML, есть ли xpath, который выдаст мне значения 'test' и 'name'?
Вопрос
Мне нужно получить значение атрибута 'test' в теге xsl:when и атрибута 'name' в теге xsl:call-template.Этот xpath подводит меня довольно близко:
..../xsl:template/xsl:choose/xsl:when
Но это просто возвращает элементы 'when', а не точные значения атрибутов, которые мне нужны.
Вот фрагмент моего XML-файла:
<xsl:template match="field">
<xsl:choose>
<xsl:when test="@name='First Name'">
<xsl:call-template name="handleColumn_1" />
</xsl:when>
</xsl:choose>
Решение
Стив Купер ответил на первую часть.Для второй части вы можете использовать:
.../xsl:template/xsl:choose/xsl:when[@test="@name='First Name'"]/xsl:call-template/@name
Который будет конкретно соответствовать xsl:when в приведенном выше фрагменте.Если вы хотите, чтобы он соответствовал общему, то вы можете использовать:
.../xsl:template/xsl:choose/xsl:when/xsl:call-template/@name
Другие советы
ты хочешь .../xsl:template/xsl:choose/xsl:when/@test
Если вы действительно хотите получить значение 'First Name' из атрибута test, вам не повезло - содержимое внутри атрибута - это просто строка, а не фрагмент xml, поэтому вы не можете использовать xpath для нее.Если вам нужно получить это, вы должны использовать манипулирование строками (например, подстрокой), чтобы получить нужное содержимое