質問

SSISのXMLタスクの要件であるxsl / xsltを使用して、次のxmlから属性 xmlns =" http://webdev2003.test.com" を削除しようとしています。大きなファイルサイズを考慮した適切な方法論とは何ですか。 〜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>
役に立ちましたか?

解決

自分の質問に答えるのは嫌いですが、クレジットは- http://blogs.msdn.com/kaevans/archive/2003/06/13/8679.aspx

例の最初の部分には、私のシナリオで機能するすべての属性を削除する方法がリストされています。おそらくより良い解決策がありますか?

他のヒント

この記事。 exclude-result-prefixes属性に追加する前に、スタイルシートで名前空間のプレフィックスを宣言する必要があるようです。

  

xsl:stylesheet要素のexclude-result-prefixes属性を使用すると、これを防ぐことができます。名前空間プレフィックスが結果ツリーに表示されるため、この属性の名前はわかりにくい場合があります。 「結果のプレフィックスを除外する」という意味ではありません。つまり、「これらのプレフィックスを持つ名前空間を除外する」ということです。

はどうですか

<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>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top