Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
需要使用xslt将xml文件转换为另一个xml,xslt的xsl文件使用Properties.xml文件_Xml_Xslt_Properties_Mapping - Fatal编程技术网

需要使用xslt将xml文件转换为另一个xml,xslt的xsl文件使用Properties.xml文件

需要使用xslt将xml文件转换为另一个xml,xslt的xsl文件使用Properties.xml文件,xml,xslt,properties,mapping,Xml,Xslt,Properties,Mapping,考虑我的输入xml文件,如下所示 <?xml version="1.0" encoding="UTF-8"?> <com xsi:schemaLocation="http://do.way.com/sales/Amb http://do.way.com/temp/sales/ale/ax.xsd" xmlns:w="http://do.way.com/sales/W" xmlns="

考虑我的输入xml文件,如下所示

     <?xml version="1.0" encoding="UTF-8"?>
        <com xsi:schemaLocation="http://do.way.com/sales/Amb
           http://do.way.com/temp/sales/ale/ax.xsd" 
           xmlns:w="http://do.way.com/sales/W" 
           xmlns="http://do.way.com/sales/Amb" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:wire="http://do.way.com/sales/Wire">

    <content>
      <wire:wire>
        <wire:sI>

          <w:aH>
          <text>Ccc  <dynamic name="C_R_N"/>: More</text>
          <w:contact value="false"/>
          </w:aH>

          <w:page>
            <nL>Please call us</nL>
          </w:page>

          <w:body>
            <text> C R N: <strong>
           <dynamic name="C_R_N"/></strong>
            </text>
          </w:body>

          <w:body>
            <text>
              RE: <dynamic name="D_C_P"/> <dynamic name="M_C_O"/>
            </text>
          </w:body>

          <w:body>
            <text>
              In order <strong>
                <dynamic name="M_D_D"/>
              </strong>, we need some information.
            </text>
          </w:body>

          <w:body>
            <text>
              <strong>
                Please call us <dynamic name="C_P_D_N"/>.
              </strong> Our hours <ul class="nested">
                <li>
                   Monday - Friday, 
    <dynamic name="DST_M_F_S_Hour"/> am - 
    <dynamic name="DST_M_F_E_Hour"/> pm; Saturday, 
    <dynamic name="DST_M_F_S_Hour"/> am - 
    <dynamic name="DST_M_F_E_Hour"/> pm.
                </li>
                       </ul>
            </text>
          </w:body>

          <w:body>
            <text>
              Thank you for your  action. .
            </text>
          </w:body>


          <w:body>
            <text>
              <dynamic name="C_D_N"/>
            </text>
          </w:body>


          <w:TextAndImage>
            <text>
             <dynamic name="C_S_N_D"/>            
            </text>
          </w:TextAndImage>

          <w:dynamicNames>
            <w:dynamicName value="LOW"/>
            <w:dynamicName value="Env"/>
          </w:dynamicNames>

          </wire:sI>
        </wire:wire>

          </content>
          </com>    

Ccc:更多
请给我们打电话
C R N:

关于
顺序
,我们需要一些信息。

请给我们打电话。
我们的工作时间
  • 星期一至星期五, am- 下午;星期六, am- 下午。
谢谢你的行动。
转换上述输入xml文件所需的xsl文件是指Properties.xml文件,该文件具有下面给出的输入xml标记元素(键)的相应转换标记(值) Properties.xml

      <?xml version="1.0" encoding="utf-8"?>

            <Properties>     
            <Property value="w:aH">aHe</Property>
           <Property value="w:contact">contact1</Property>
           <Property value="w:page">pageH</Property> 
           <Property value="w:body">bodyP</Property>
           <Property value="w:TextAndImage">textAndImage1</Property>
           <Property value="w:dynamicNames">dynamicNames1</Property>
           <Property value="w:dynamicName">dynamicValName</Property>
         </Properties> 

啊哈
联系人1
佩吉
博迪普
文本和图像1
动态名称1
动态名称
我转换后的xml看起来像

    <Content xsi:schemaLocation="id:d1234 http://abc:10/w/g/B/System/abc.xsd" 
 xmlns="id:d1234" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


     <aHe>
      <text>Ccc  
             <dynamic name="C_R_N" xmlns="http://www.w3.org/1999/xhtml" >
                  C_R_N
            </dynamic>
        : More
    </text>
      <contact1>false</contact1>
      </aHe>

      <pageH>
        <nL>Please call us</nL>
      </pageH>

      <bodyP>
        <text> C R N: <strong>
       <dynamic name="C_R_N" xmlns="http://www.w3.org/1999/xhtml">
      C_R_N
     </dynamic>
      </strong>
        </text>
      </bodyP>

      <bodyP>
        <text>
          RE: <dynamic name="D_C_P" xmlns="http://www.w3.org/1999/xhtml"> 
              D_C_P</dynamic>
             <dynamic name="M_C_O" xmlns="http://www.w3.org/1999/xhtml">M_C_O</dynamic>
        </text>
      </bodyP>

      <bodyP>
        <text>
          In order <strong>
            <dynamic name="M_D_D" xmlns="http://www.w3.org/1999/xhtml"> M_D_D </dynamic>
          </strong>, we need some information.
        </text>
      </bodyP>

      <bodyP>
        <text>  Please call us 
          <strong>
           <dynamic name="C_P_D_N" xmlns="http://www.w3.org/1999/xhtml">C_P_D_N</dynamic>.
          </strong> Our hours <ul class="nested">
            <li>
               Monday - Friday, <dynamic name="DST_M_F_S_Hour" xmlns="http://www.w3.org/1999/xhtml">DST_M_F_S_Hour</dynamic> am - <dynamic name="DST_M_F_E_Hour" xmlns="http://www.w3.org/1999/xhtml">DST_M_F_E_Hour</dynamic> pm; Saturday, <dynamic name="DST_M_F_S_Hour" xmlns="http://www.w3.org/1999/xhtml">DST_M_F_S_Hour</dynamic> am - <dynamic name="DST_M_F_E_Hour" xmlns="http://www.w3.org/1999/xhtml">
              DST_M_F_E_Hour</dynamic>pm.
            </li>
                   </ul>
        </text>
      </bodyP>

      <bodyP>
        <text>
          Thank you for your  action. .
        </text>
      </bodyP>


      <bodyP>
        <text>
          <dynamic name="C_D_N" xmlns="http://www.w3.org/1999/xhtml">
          C_D_N </dynamic>
        </text>
      </bodyP>


      <textAndImage>
        <text>
          <dynamic name="C_S_N_D" xmlns="http://www.w3.org/1999/xhtml">
           C_S_N_D </dynamic>
        </text>
      </textAndImage>

      <dynamicNames1>
        <dynamicValName>LOW</dynamicValName>
        <dynamicValName>Env</dynamicValName>
      </dynamicNames1>

     </Content>


      Can anyone  provide me with the xsl file which meets my requirement.

Ccc
C\u R\N
:更多
假的
请给我们打电话
C R N:
C\u R\N

关于
迪库普
M__O
顺序
M_D_D
,我们需要一些信息。
请给我们打电话

C_P_D_N。
我们的工作时间
  • 星期一至星期五,上午夏令时-下午夏令时;周六,DST_M_F_S_小时上午- 每小时一次。
谢谢你的行动。 C_dn C_S_N_D 低 环境 任何人都可以向我提供满足我要求的xsl文件。
看起来您不需要属性文件,因为您只需要摆脱名称空间,而名称空间可以做得更简单:

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

您想要实现的其余部分可能是简单的xslt内容

编辑

更新内容,包括将使您更接近目标的内容

<xsl:template match="/">
    <Content>
        <xsl:apply-templates/>
    </Content>
</xsl:template>

<xsl:template match="@*">
    <xsl:copy/>
</xsl:template>

<xsl:template match="* [local-name() != 'com' and local-name() != 'content' and local-name() != 'wire' and local-name() != 'sI']">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates select="node() | @*"/>
    </xsl:element>
</xsl:template>

<xsl:template match="* [local-name() = 'dynamic']">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates select="node() | @*"/>
        <xsl:value-of select="@name"/>
    </xsl:element>
</xsl:template>

<xsl:template match="* [local-name() = 'contact' or local-name()='dynamicName']">
    <xsl:element name="{local-name()}">
        <xsl:value-of select="@value"/>
    </xsl:element>
</xsl:template>

结果是

<?xml version="1.0" encoding="UTF-8"?>
<Content>
    <aH>
        <text>Ccc  <dynamic name="C_R_N">C_R_N</dynamic>: More</text>
        <contact>false</contact>
    </aH>
    <page>
        <nL>Please call us</nL>
    </page>
    <body>
        <text> C R N: <strong>
                <dynamic name="C_R_N">C_R_N</dynamic>
            </strong></text>
    </body>
    <body>
        <text>
              RE: <dynamic name="D_C_P">D_C_P</dynamic><dynamic name="M_C_O">M_C_O</dynamic></text>
    </body>
    <body>
        <text>
              In order <strong>
                <dynamic name="M_D_D">M_D_D</dynamic>
            </strong>, we need some information.
            </text>
    </body>
    <body>
        <text><strong>
                Please call us <dynamic name="C_P_D_N">C_P_D_N</dynamic>.
              </strong> Our hours <ul class="nested">
                <li>
                   Monday - Friday, 
    <dynamic name="DST_M_F_S_Hour">DST_M_F_S_Hour</dynamic> am - 
    <dynamic name="DST_M_F_E_Hour">DST_M_F_E_Hour</dynamic> pm; Saturday, 
    <dynamic name="DST_M_F_S_Hour">DST_M_F_S_Hour</dynamic> am - 
    <dynamic name="DST_M_F_E_Hour">DST_M_F_E_Hour</dynamic> pm.
                </li>
            </ul></text>
    </body>
    <body>
        <text>
              Thank you for your  action. .
            </text>
    </body>
    <body>
        <text>
            <dynamic name="C_D_N">C_D_N</dynamic>
        </text>
    </body>
    <TextAndImage>
        <text>
            <dynamic name="C_S_N_D">C_S_N_D</dynamic>
        </text>
    </TextAndImage>
    <dynamicNames>
        <dynamicName>LOW</dynamicName>
        <dynamicName>Env</dynamicName>
    </dynamicNames>
</Content>

Ccc C\u R\N:更多
假的
请给我们打电话
C R N:
C\u R\N

回复:D_C_PM_C_O
顺序
M_D_D
,我们需要一些信息。

请叫我们C_P_D_N。
我们的工作时间
  • 星期一至星期五, DST_M_F_S_小时上午- DST_M_F_E_h pm;星期六, DST_M_F_S_小时上午- 下午四点半。
谢谢你的行动。 C_dn C_S_N_D 低 环境
相反,如果希望将属性dynamic/@name和otherElement/@value的所有属性值移动到元素体,则将执行以下操作:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <Content>
            <xsl:apply-templates/>
        </Content>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:copy/>
    </xsl:template>
    <xsl:template match="* [local-name() != 'com' and local-name() != 'content' and local-name() != 'wire' and local-name() != 'sI']">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="node() | @*"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="* [local-name() = 'dynamic']">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="node() | @*[local-name !='name']"/>
            <xsl:value-of select="@name"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="* [local-name() != 'dynamic' and @value]">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="node() | @*[local-name !='value']"/>
            <xsl:value-of select="@value"/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

结果

<?xml version="1.0" encoding="UTF-8"?>
<Content>
    <aH>
        <text>Ccc  <dynamic>C_R_N</dynamic>: More</text>
        <contact>false</contact>
    </aH>
    <page>
        <nL>Please call us</nL>
    </page>
    <body>
        <text> C R N: <strong>
                <dynamic>C_R_N</dynamic>
            </strong></text>
    </body>
    <body>
        <text>
              RE: <dynamic>D_C_P</dynamic><dynamic>M_C_O</dynamic></text>
    </body>
    <body>
        <text>
              In order <strong>
                <dynamic>M_D_D</dynamic>
            </strong>, we need some information.
            </text>
    </body>
    <body>
        <text><strong>
                Please call us <dynamic>C_P_D_N</dynamic>.
              </strong> Our hours <ul class="nested">
                <li>
                   Monday - Friday, 
    <dynamic>DST_M_F_S_Hour</dynamic> am - 
    <dynamic>DST_M_F_E_Hour</dynamic> pm; Saturday, 
    <dynamic>DST_M_F_S_Hour</dynamic> am - 
    <dynamic>DST_M_F_E_Hour</dynamic> pm.
                </li>
            </ul></text>
    </body>
    <body>
        <text>
              Thank you for your  action. .
            </text>
    </body>
    <body>
        <text>
            <dynamic>C_D_N</dynamic>
        </text>
    </body>
    <TextAndImage>
        <text>
            <dynamic>C_S_N_D</dynamic>
        </text>
    </TextAndImage>
    <dynamicNames>
        <dynamicName>LOW</dynamicName>
        <dynamicName>Env</dynamicName>
    </dynamicNames>
</Content>

Ccc C\u R\N:更多
假的
请给我们打电话
C R N:
C\u R\N

回复:D_C_PM_C_O
顺序
M_D_D
,我们需要一些信息。

请叫我们C_P_D_N。
我们的工作时间
  • 星期一至星期五, DST_M_F_S_小时上午- DST_M_F_E_h pm;星期六, DST_M_F_S_小时上午- 下午四点半。
谢谢你的行动。 C_dn C_S_N_D 低 环境
看起来您不需要属性文件,因为您只需要摆脱名称空间,而名称空间可以做得更简单:

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

您想要实现的其余部分可能是简单的xslt内容

编辑

更新内容,包括将使您更接近目标的内容

<xsl:template match="/">
    <Content>
        <xsl:apply-templates/>
    </Content>
</xsl:template>

<xsl:template match="@*">
    <xsl:copy/>
</xsl:template>

<xsl:template match="* [local-name() != 'com' and local-name() != 'content' and local-name() != 'wire' and local-name() != 'sI']">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates select="node() | @*"/>
    </xsl:element>
</xsl:template>

<xsl:template match="* [local-name() = 'dynamic']">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates select="node() | @*"/>
        <xsl:value-of select="@name"/>
    </xsl:element>
</xsl:template>

<xsl:template match="* [local-name() = 'contact' or local-name()='dynamicName']">
    <xsl:element name="{local-name()}">
        <xsl:value-of select="@value"/>
    </xsl:element>
</xsl:template>

结果是

<?xml version="1.0" encoding="UTF-8"?>
<Content>
    <aH>
        <text>Ccc  <dynamic name="C_R_N">C_R_N</dynamic>: More</text>
        <contact>false</contact>
    </aH>
    <page>
        <nL>Please call us</nL>
    </page>
    <body>
        <text> C R N: <strong>
                <dynamic name="C_R_N">C_R_N</dynamic>
            </strong></text>
    </body>
    <body>
        <text>
              RE: <dynamic name="D_C_P">D_C_P</dynamic><dynamic name="M_C_O">M_C_O</dynamic></text>
    </body>
    <body>
        <text>
              In order <strong>
                <dynamic name="M_D_D">M_D_D</dynamic>
            </strong>, we need some information.
            </text>
    </body>
    <body>
        <text><strong>
                Please call us <dynamic name="C_P_D_N">C_P_D_N</dynamic>.
              </strong> Our hours <ul class="nested">
                <li>
                   Monday - Friday, 
    <dynamic name="DST_M_F_S_Hour">DST_M_F_S_Hour</dynamic> am - 
    <dynamic name="DST_M_F_E_Hour">DST_M_F_E_Hour</dynamic> pm; Saturday, 
    <dynamic name="DST_M_F_S_Hour">DST_M_F_S_Hour</dynamic> am - 
    <dynamic name="DST_M_F_E_Hour">DST_M_F_E_Hour</dynamic> pm.
                </li>
            </ul></text>
    </body>
    <body>
        <text>
              Thank you for your  action. .
            </text>
    </body>
    <body>
        <text>
            <dynamic name="C_D_N">C_D_N</dynamic>
        </text>
    </body>
    <TextAndImage>
        <text>
            <dynamic name="C_S_N_D">C_S_N_D</dynamic>
        </text>
    </TextAndImage>
    <dynamicNames>
        <dynamicName>LOW</dynamicName>
        <dynamicName>Env</dynamicName>
    </dynamicNames>
</Content>

Ccc C\u R\N:更多
假的