Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何消除XML文档中的十六进制值并重命名标记_Xml_Xslt - Fatal编程技术网

如何消除XML文档中的十六进制值并重命名标记

如何消除XML文档中的十六进制值并重命名标记,xml,xslt,Xml,Xslt,我有如下XML文件 由于具有十六进制值,此类型的XML文件SSIS XML任务不接受 像这样的标签,我需要用替换 我必须在每个XML文件中更改大约40个标记 我怎样才能做到这两件事,有人能给我指出正确的方向吗?这个答案假设你说的“十六进制值”是指十六进制字符引用。如果这是不正确的,请澄清 只要通过XSLT处理器运行XML,就可以解析十六进制引用。(我使用Xalan、Saxon 6.5.5和Saxon HE/PE/EE 9.3.05进行了测试。) 除了身份转换之外,您只需要另一个模板来重命名元素

我有如下XML文件

  • 由于具有十六进制值,此类型的XML文件SSIS XML任务不接受
  • 这样的标签,我需要用
    替换
  • 我必须在每个XML文件中更改大约40个标记


    我怎样才能做到这两件事,有人能给我指出正确的方向吗?

    这个答案假设你说的“十六进制值”是指十六进制字符引用。如果这是不正确的,请澄清

    只要通过XSLT处理器运行XML,就可以解析十六进制引用。(我使用Xalan、Saxon 6.5.5和Saxon HE/PE/EE 9.3.05进行了测试。)

    除了身份转换之外,您只需要另一个模板来重命名元素

    XML输入

    <some.doc>
      <some.element attr="test">
        <another.element>Here is a hex ref: &#x3A9;</another.element>
        <another.element>Here is a hex ref: &#x3A3;</another.element>
      </some.element>
    </some.doc>
    
    <some_doc>
       <some_element attr="test">
          <another_element>Here is a hex ref: Ω</another_element>
          <another_element>Here is a hex ref: Σ</another_element>
       </some_element>
    </some_doc>
    
    
    这是一个十六进制参考:Ω;
    这是一个十六进制参考:Σ;
    
    XSLT1.0

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output indent="yes"/>
      <xsl:strip-space elements="*"/>
    
      <xsl:template match="text()|processing-instruction()|comment()|@*">
        <xsl:copy>
          <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
      </xsl:template>
    
      <xsl:template match="*">
        <xsl:element name="{translate(name(),'.','_')}">
          <xsl:apply-templates select="node()|@*"/>     
        </xsl:element>
      </xsl:template>
    
    </xsl:stylesheet>
    
    
    
    XML输出

    <some.doc>
      <some.element attr="test">
        <another.element>Here is a hex ref: &#x3A9;</another.element>
        <another.element>Here is a hex ref: &#x3A3;</another.element>
      </some.element>
    </some.doc>
    
    <some_doc>
       <some_element attr="test">
          <another_element>Here is a hex ref: Ω</another_element>
          <another_element>Here is a hex ref: Σ</another_element>
       </some_element>
    </some_doc>
    
    
    这是一个十六进制参考:Ω
    这是一个十六进制参考∑
    
    感谢您的快速回复。这对我来说很好。在我的源XML中使用十六进制有一些十六进制符号,这些符号类似于^(不完全是),当我将该XML作为SSIS中XML任务的源时,如何删除或克服这些符号。