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 に答える