首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用1个XSLT时从XML输出中删除命名空间

使用1个XSLT时从XML输出中删除命名空间
EN

Stack Overflow用户
提问于 2013-02-05 21:02:46
回答 1查看 564关注 0票数 0

我使用的是Crystal Report 2011 Export some,由于某些原因,我不能在XSLT中使用标记名称空间别名。

我有以下XSLT:

代码语言:javascript
复制
      <xsl:namespace-alias stylesheet-prefix="b" result-prefix="#default"/>

      <xsl:template match="/b:CrystalReport">
        <root>
          <xsl:for-each select="b:Details">
            <person>
              <VRN><xsl:value-of select="b:Section/b:Field[@Name='ITMVEHICLEREGNUM1']/b:FormattedValue"/></VRN>
              <Make><xsl:value-of select="b:Section/b:Field[@Name='ITMMANUDESC1']/b:FormattedValue"/></Make>
              <Model><xsl:value-of select="b:Section/b:Field[@Name='ITMODELDESC1']/b:FormattedValue"/></Model>
              <PolicyNumber><xsl:value-of select="b:Section/b:Field[@Name='POLEXTERNAL11']/b:FormattedValue"/></PolicyNumber>
              <Title><xsl:value-of select="b:Section/b:Field[@Name='TITDESCRIPTION1']/b:FormattedValue"/></Title>
              <FirstName><xsl:value-of select="b:Section/b:Field[@Name='CLIFIRST1']/b:FormattedValue"/></FirstName>
              <LastName><xsl:value-of select="b:Section/b:Field[@Name='CLISURN1']/b:FormattedValue"/></LastName>
              <PostCode><xsl:value-of select="b:Section/b:Field[@Name='ADRPOSTCODE1']/b:FormattedValue"/></PostCode>
              <CoverStartDate><xsl:value-of select="b:Section/b:Field[@Name='POLRENDATE1']/b:FormattedValue"/></CoverStartDate>
              <CoverEndDate><xsl:value-of select="b:Section/b:Field[@Name='POLENDDATE1']/b:FormattedValue"/></CoverEndDate>
              <FullyComp><xsl:value-of select="b:Section/b:Field[@Name='ITMCOVERTYPECDE1']/b:FormattedValue"/></FullyComp>
              <GlassLimit>500</GlassLimit>
              <GlassExcess>75</GlassExcess>
              <VatReg><xsl:value-of select="b:Section/b:Field[@Name='CLIVATREG1']/b:FormattedValue"/></VatReg>
              <AccidentDamageExecess>N/A</AccidentDamageExecess>
              <RepairExcess>0.00</RepairExcess>
              <Insurer><xsl:value-of select="b:Section/b:Field[@Name='INSNAME1']/b:FormattedValue"/></Insurer>
              <Referral><xsl:value-of select="b:Section/b:Field[@Name='CENDESC1']/b:FormattedValue"/></Referral>
            </person>
          </xsl:for-each>
        </root>
      </xsl:template>

    </xsl:stylesheet>

输出如下所示:-

代码语言:javascript
复制
    <root xmlns:b="urn:crystal-reports:schemas:report-detail">  
      <person>  
        <VRN>XXXXXX</VRN>  
        <Make>AUSTIN</Make>  
        <Model>A35</Model>  
        <PolicyNumber>XXXXXXXX</PolicyNumber>  
        <Title>Mr</Title>  
        <FirstName>Gareth</FirstName>  
        <LastName>Jones</LastName>  
        <PostCode>AL23 6TR</PostCode>  
        <CoverStartDate>06.04.2011</CoverStartDate>  
        <CoverEndDate>05.04.2012</CoverEndDate>  
        <FullyComp>01</FullyComp>  
        <GlassLimit>500</GlassLimit>  
        <GlassExcess>75</GlassExcess>  
        <VatReg></VatReg>  
        <AccidentDamageExecess>N/A</AccidentDamageExecess>  
        <RepairExcess>0.00</RepairExcess>  
        <Insurer>My Insurer</Insurer>  
        <Referral>Direct</Referral>  
      </person>  
    </root>

我需要能够从标记中删除名称空间,并且只能使用1个XSLT来完成此操作。

感谢您的帮助。

谢谢克雷格

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 21:10:19

你不需要在这里使用namespace-alias。结果已经在null名称空间中,但是如果您想要禁止b名称空间声明,您只需要使用exclude-result-prefixes

代码语言:javascript
复制
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:b="urn:crystal-reports:schemas:report-detail"
    exclude-result-prefixes="b">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14708206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档