Похоже, что вы хотите выбрать часть 'id' строки URL внутри элемента URL
. Вы должны выбрать подстроку после ?id=
:
<ID>
<xsl:value-of select="substring-after(URL,'?id=')"/>
</ID>
Более того, в шаблоне вы находитесь в контексте CONTACT
, поэтому, чтобы выбрать его дочерний элемент, вам нужно просто указать имя элемента. Пример:
<xsl:template match="CONTACT">
<xsl:value-of select="URL"/>
</xsl:template>
Вернет значение URL
, а:
<xsl:template match="CONTACT">
<xsl:value-of select="CONTACT/URL"/>
</xsl:template>
ничего не вернет, не имея CONTACT
дочерних элементов типа CONTACT/URL
.
Бонусный ответ на комментарий к вопросу:
Я хотел бы извлечь идентификатор из тега URL, если URL доступен, или я хочу извлечь первые шесть букв из адреса электронной почты, чтобы вставить его в идентификатор (уникальный) (...) Если у нас есть один несколько адресов электронной почты, тогда мы можем выбрать любую из первых шести букв из адреса электронной почты. Я думаю, что контакты должны иметь хотя бы один адрес электронной почты, если URL отсутствует ...
<ID>
<xsl:choose>
<xsl:when test="URL">
<xsl:value-of select="substring-after(URL,'?id=')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-before(EMail[1],'@')"/>
</xsl:otherwise>
</xsl:choose>
</ID>