سؤال

واني اسعى لإزالة xmlns="http://webdev2003.test.com" السمة من أكس التالية باستخدام XSL / XSLT، وهو الشرط الذي وضعته 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>
هل كانت مفيدة؟

المحلول

وأنا أكره عندما كنت الإجابة على الأسئلة الخاصة بي، ولكن الفضل في ذلك إلى - <وأ href = "http://blogs.msdn.com/kaevans/archive/2003/06/13/8679.aspx" يختلط = " noreferrer نوفولو "> http://blogs.msdn.com/kaevans/archive/2003/06/13/8679.aspx

والجزء الأول من المثال يسرد كيفية إزالة كل الصفات التي تعمل في السيناريو بلدي. ربما هناك حل أفضل؟

نصائح أخرى

وأعتقد أنك يمكن إزالة الإعلانات مساحة الاسم كما هو موضح في <لأ href = "http://www.xml.com/pub/a/2001/04/04/trxml/index.html" يختلط = "noreferrer نوفولو "> هذه المقالة . يبدو أنك قد تضطر إلى إعلان بادئة لمساحة الاسم في ورقة الأنماط الخاصة بك قبل إضافتها إلى السمة استبعاد-نتيجة-البادئات.

<اقتباس فقرة>   

ويمكنك منع هذا من الحدوث مع XSL: السمة استبعاد-نتيجة-البادئات عنصر أنماط و. يمكن أن يكون اسم هذه السمة مربكة، لأن البادئات مساحة الاسم سوف لا تزال تظهر في شجرة النتيجة. وهذا لا يعني "استبعاد البادئات في النتيجة". وهو ما يعني "استبعاد مساحات مع هذه البادئات".

وماذا عن

<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