2013-11-28 4 views
0

Я пытаюсь получить определение типа из внешнего xsd-файла. В этом примере мой $attType имеет префикс пространства имен. Но в XPath я использую, чтобы получить определение, я не хочу префикс. Вопрос в следующем: как?удалить префикс пространства имен с помощью xslt

<xsl:copy-of select="document('../file.xsd')//xs:simpleType[@name=$attType]" /> 
+0

См http://stackoverflow.com/questions/9304592/xslt-how-get-rid-of-default -namespaces-prefixes-in-xpath-xmlns – halfbit

+1

Я взял грязное решение: substring-after ($ attType, ':') – cRiMi

ответ

0

Несколько менее загрязнен решением является использование local-name(), чтобы правильно определить имя объекта в пространстве имен.

Это должно лишить пространство имен из элементов и attirbutes, и сохранить текст, а также:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="@*"> 
    <xsl:attribute name="{local-name(.)}"> 
     <xsl:value-of select="." /> 
    </xsl:attribute> 
    </xsl:template> 
    <xsl:template match="node()"> 
    <xsl:element name="{local-name(.)}"> 
     <xsl:apply-templates select="@*|*|text()"/> 
    </xsl:element> 
    </xsl:template> 
    <xsl:template match="text()"> 
     <xsl:copy /> 
    </xsl:template> 
</xsl:stylesheet> 
Смежные вопросы