0

我有 xml 我想按原样复制(检查 xmlns="" 和标签。我想按原样创建。总计算被照顾。只有这个问题。它是有效的。仍然客户希望预期的格式像任何帮助都非常感谢。

        **Input.xml**

 <Employees>
   <employee>
    <dept>1</dept>
    <sec></sec>
     </employee>
      <employee>
       <dept>2</dept>
           <sec></sec>
        </employee>
        </Employees>

预期的

     <Employees xmnls="1.2" xmlns:xsi="3" xsi:schemalocation="4">
                <totalemp>2</totalemp>
               <employee>
                 <dept>1</dept>
                  <sec></sec>
                 <employee>
                  <employee>
                       <dept>2</dept>
                              <sec></sec>
                     <employee>
                    </Employees>

实际的

                        <Employees>
                          <totalemp>2</totalemp>
                           <employee xmlns="">
                            <dept>1</dept>
                              <sec/>
                            </employee>
                             <employee>
                               <dept>2</dept>
                                  <sec/>
                               <employee>
                              </Employees>
4

1 回答 1

0

除非我误解了您的要求,否则您可以匹配Employees元素,并输出一个添加了所需命名空间的新元素。您还需要匹配其他元素,并在它们上指定默认命名空间以避免xmlns=''出现。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="*">
      <xsl:element name="{local-name()}" namespace="1.2">
         <xsl:apply-templates select="@*|node()"/>
      </xsl:element>
   </xsl:template>

   <xsl:template match="@*|text()|comment()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="Employees">
      <Employees xmlns="1.2" xmlns:xsi="3" xsi:schemalocation="4">
         <xsl:apply-templates select="@*"/>
         <totalemp>
            <xsl:value-of select="count(employee)"/>
         </totalemp>
         <xsl:apply-templates select="node()"/>
      </Employees>
   </xsl:template>
</xsl:stylesheet>

当应用于您的示例 XML 时,将输出以下内容:

<Employees xmnls="1.2" xsi:schemalocation="4" xmlns:xsi="3">
   <totalemp>2</totalemp>
   <employee>
      <dept>1</dept>
      <sec/>
   </employee>
   <employee>
      <dept>2</dept>
      <sec/>
   </employee>
</Employees>
于 2012-05-15T15:03:49.697 回答