2010-09-22 17 views
1
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
    version="1.0" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    exclude-result-prefixes="xmlns"> 

    <xsl:output omit-xml-declaration="yes" method="xml" encoding="utf-8" /> 

У меня проблемы во время преобразования в XHTML, некоторые элементы, как это: Xmlns: мс = «урна: схемы-Microsoft-ком: XSLT» являются insered во многих моих XHTML тег.XSLT в процессе трансформации

например:

<script type="text/javascript" src="/style/js/etablissement/videos.js" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" ></script> 

Я работаю над IIS6. и у меня нет объяснений.

У вас была такая же проблема? Что не так в моем коде?

спасибо.

+0

Хороший вопрос (+1). См. Мой ответ для объяснения проблемы и полного решения. :) –

ответ

4

исключить-результат-префиксы = "XMLNS">

Что плохого о моем коде?

Это не совсем важно, поскольку в таблице стилей XSLT нет префикса пространства имен, называемого "xmlns".

С другой стороны, существующие префиксы: "ms", "infoRequest" и "xsl".

Если эти префиксы указаны в виде списка, разделенного пробелами, как значение атрибута exclude-result-prefixes, то они не будут присутствовать в сериализации (выходе) любого литерала.

Например:

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
    version="1.0" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    exclude-result-prefixes="ms infoRequest xsl"> 

    <xsl:output omit-xml-declaration="yes" method="xml" encoding="utf-8" /> 

    <xsl:template match="/"> 
     <html> 
     <head> 
      <script type="text/javascript" src="/style/js/etablissement/videos.js"> 
      /* Script code here */ 
      </script> 
     </head> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

, когда это преобразование выполняется (на любом документе XML источника - не используется), результата dosn't содержит какие-либо нежелательные пространства имен:

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <script type="text/javascript" src="/style/js/etablissement/videos.js"> 
      /* Script code here */ 
     </script> 
    </head> 
</html> 
+0

Спасибо, что это прекрасно. –

3

Вы можете исключить эти пространства имен, подавив их через атрибут exclude-result-prefixes. Вы должны перечислить префиксы пространства имен, разделенных пробелами:

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
    version="1.0" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:infoRequest="ControlSkin3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    exclude-result-prefixes="infoRequest ms"> 
+1

Я думаю, что вам нужно перефразировать первое предложение как «Вы можете исключить эти пространства имен ** для литеральных элементов результата **». – 2010-09-22 13:14:15

Смежные вопросы