Я работаю над шаблоном вызова, где источник выглядит так.Обработка различных пространств имен для шаблона вызова в xslt
Источник:
<Content>
<first>
<text>
Text
</text>
<link xmlns="Some namespace">
<AA>abcd</AA>
<BB>hi all</BB>
</link>
</first>
<second>
<link xmlns="Some other namespace">
<AA>abcd1</AA>
<BB>hi all21</BB>
</link>
</second>
<three>
<link xmlns="other namespace">
<AA>abcd2</AA>
<BB>hi all33</BB>
</link>
</three>
</Content>
XSLT написано:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n1="Some namespace" xmlns:n2="Some other namespace" xmlns:n3="other namespace">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Content">
<xsl:call-template name="process">
<xsl:with-param name="item" select="first/n1:link" />
</xsl:call-template>
<xsl:call-template name="process">
<xsl:with-param name="item" select="second/n2:link" />
</xsl:call-template>
<xsl:call-template name="process">
<xsl:with-param name="item" select="three/n3:link" />
</xsl:call-template>
</xsl:template>
<xsl:template name="process">
<xsl:param name="item" />
<xsl:value-of select="$item/AA" />
</xsl:template>
</xsl:stylesheet>
Я получаю пустой output.I знаю причину, потому что я не добавляет префикс пространства имен для него. как «n1: A».
Как поступает несколько раз. Я написал шаблон и позвонил туда, где это было необходимо. Но пространство имен каждой ссылки отличается. Как мне изменить свой код, чтобы я мог повторно использовать шаблон «процесс».
Может ли кто-нибудь помочь, как мне изменить шаблон процесса, чтобы обрабатывать разные пространства имен, но с той же структурой.
спасибо.
Атрибут 'namespace =' не содержит пространства имен XML. Это просто атрибут, поэтому он ищет его ('select ='), поскольку пространство имен в вашем XSL не будет работать. Что касается ответа, вам придется подождать, пока ваш XML будет исправлен. –
@ Jim Garrison. Извините за неправильный ввод. Я отредактировал вопрос. – Patan