代码之家  ›  专栏  ›  技术社区  ›  decompiled

Rmove xmlns属性

  •  5
  • decompiled  · 技术社区  · 16 年前

    xmlns="http://webdev2003.test.com" 使用xsl/xslt从以下xml中提取,这是SSIS中xml任务的一个要求。考虑到较大的文件大小,什么是合适的方法~40mb

    <?xml version="1.0" encoding="utf-16"?>
    <ArrayOfAccount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">    
    <Account>  
        <FirstName xmlns="http://webdev2003.test.com/">John</FirstName>  
        <LastName xmlns="http://webdev2003.test.com/">Smith</LastName>  
    </Account>  
    </ArrayOfAccount>
    
    3 回复  |  直到 10 年前
        1
  •  3
  •   decompiled    16 年前

    http://blogs.msdn.com/kaevans/archive/2003/06/13/8679.aspx

    示例的第一部分列出了如何删除场景中可用的所有属性。也许有更好的解决办法?

        2
  •  1
  •   Don Kirkby    16 年前

    this article . 在将名称空间添加到“排除结果前缀”属性之前,您可能必须在样式表中声明名称空间的前缀。

    使用xsl:stylesheet元素的exclude result prefixes属性可以防止这种情况发生。此属性的名称可能会令人困惑,因为名称空间前缀仍将显示在结果树中。这并不意味着“排除结果中的前缀”;它的意思是“排除带有这些前缀的名称空间”。

        3
  •  0
  •   abatishchev Karl Johan    13 年前

    那么...怎么样

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsl:template match="*">
        <xsl:element name="{name()}">
          <xsl:apply-templates select="attribute::*"/>
          <xsl:if test="namespace-uri()!='http://webdev2003.test.com/' and
                  namespace-uri()!=''">
            <xsl:attribute name="xmlns">
              <xsl:value-of select="namespace-uri()"/>
            </xsl:attribute>
          </xsl:if>
          <xsl:apply-templates/>
        </xsl:element>
      </xsl:template>
    
      <xsl:template match="@*">
        <xsl:attribute name="{name()}">
          <xsl:value-of select="."/>
        </xsl:attribute>
      </xsl:template>
    </xsl:stylesheet>
    

    ?