XSLT:添加新元素时排除名称空间

 尖塔顶的Cat 发布于 2023-02-06 12:23

我需要使用xalan重定向扩展名将新元素添加到现有xml文件中,但是命名空间存在问题。

my xslt : 

    
    
    
    
    
    
    
    
    
    
    
    

    
    
        
            
                Products Home Page
            
            
                
                    
                        

                            
                        
                        
                    
                    
                        
                                            
                    
                
            
        
    
    
        
            
        
    
    
        
            
            
                
                
                
                
                    
                
                
                    
                
                
                    
                
                
                    
                
                
                    
                        
                    
                    
                        
                            
                        
                    
                
            
        
    

    
        
            
                
            
        
    

我得到下一个输出:

proAB200black06-01-20141000

但我需要没有指定名称空间的所有元素,这样的..etc.. 建议将不胜感激

1 个回答
  • 你有

    <xsl:template
            match="/t:categories/t:category[@name=$categoryName]/t:subcategory[@name=$subcategoryName]">
            <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
                <xsl:element name="product">
    

    这样该模板将复制t:subcategory位于名称空间中的元素,然后product在没有名称空间的内部创建元素。这样,需要添加结果树的序列化程序<product xmlns="">以确保元素按创建的顺序进行序列化。如果要在与product元素相同的名称空间中创建元素,请subcategory确保您拥有

    <xsl:stylesheet xmlns="http://www.products.com" ...>
    

    放在样式表的根元素上(以放置在该命名空间中创建的所有元素)或使用

    <xsl:element name="product" namespace="http://www.products.com">...</xsl:element>
    

    或只是文字

    <product xmlns="http://www.products.com">...</product>
    

    当然,当您创建其他元素时,同样适用于它们,如果您通过第二条建议,也需要例如<xsl:element name="provider" namespace="http://www.products.com">。但是,在样式表的根元素上使用文字结果元素或正确的默认名称空间将使此操作变得更加容易。

    2023-02-06 12:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有