Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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

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
Xml 仅子节点的XSL转义字符_Xml_Xslt - Fatal编程技术网

Xml 仅子节点的XSL转义字符

Xml 仅子节点的XSL转义字符,xml,xslt,Xml,Xslt,我试图转义子节点和字段的字符。我希望保留其他父节点的和。这可以通过XSL实现吗?当我现在进行测试时,所有字符都会转义,包括父节点的 我在Chris Scott去世前两周从StackOverflow那里得到了这个密码 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

我试图转义子节点和字段的字符。我希望保留其他父节点的和。这可以通过XSL实现吗?当我现在进行测试时,所有字符都会转义,包括父节点的

我在Chris Scott去世前两周从StackOverflow那里得到了这个密码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <xsl:template match="/">
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge"><ns0:Message1>
     <xsl:apply-templates/>
</ns0:Message1></ns0:Messages>
    </xsl:template>



<xsl:template match="*">
    <xsl:text disable-output-escaping="no">&lt;</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:apply-templates select="@*"/>
    <xsl:text disable-output-escaping="no">&gt;</xsl:text>
    <xsl:apply-templates select="node()"/>
    <xsl:text disable-output-escaping="no">&lt;/</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:text disable-output-escaping="no">&gt;</xsl:text>
</xsl:template>

<xsl:template match="@*">
    <xsl:text disable-output-escaping="no">&#32;</xsl:text>
    <xsl:value-of select="name()" disable-output-escaping="no"/>
    <xsl:text disable-output-escaping="yes">=&amp;quot;</xsl:text>
    <xsl:value-of select="." disable-output-escaping="no"/>
    <xsl:text disable-output-escaping="yes">&amp;quot;</xsl:text>
</xsl:template>
<xsl:template match="text()">
    <xsl:value-of select="."/>
</xsl:template>

 <xsl:template match="ns0:Messages | ns0:Message1">
  <xsl:apply-templates/>
 </xsl:template>

        </xsl:stylesheet>
请参见下面的源示例:

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
 <ns0:Message1>
  <Information>
   <Contact>
    <Name type="Data">
     <FirstName>John</FirstName>
     <LastName>Doe</LastName>
     <Title>Mr.</Title>
    </Name>
    <MobileNumber>0123456789</MobileNumber>
    <Email>johndoe@coldmail.com</Email>
    <Address>Antartica</Address>
   </Contact>
   <Contact>
    <Name type="Data">
     <FirstName>Mara</FirstName>
     <LastName>Sov</LastName>
     <Title>Queen</Title>
    </Name>
    <MobileNumber>9999999999</MobileNumber>
    <Email>marasov@reef.com</Email>
    <Address>Reef</Address>
   </Contact>
   <Department>HR</Department>
  </Information>
 <Information>
   <Contact>
    <Name type="Data">
     <FirstName>John</FirstName>
     <LastName>Doe</LastName>
     <Title>Mr.</Title>
    </Name>
    <MobileNumber>0123456789</MobileNumber>
    <Email>johndoe@coldmail.com</Email>
    <Address>Antartica</Address>
   </Contact>
   <Contact>
    <Name type="Data">
     <FirstName>Mara</FirstName>
     <LastName>Sov</LastName>
     <Title>Queen</Title>
    </Name>
    <MobileNumber>9999999999</MobileNumber>
    <Email>marasov@reef.com</Email>
    <Address>Reef</Address>
   </Contact>
   <Department>HR</Department>
  </Information>
</ns0:Message1>
</ns0:Messages>
<ns0:Messages>
 <ns0:Message1>
  <Information>
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>John&lt;/FirstName&gt;
     &lt;LastName>Doe&lt;/LastName>
     &lt;Title>Mr.&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
    &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
    &lt;Address&gt;Antartica&lt;/Address&gt;
   &lt;/Contact&gt;
  &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>Mara&lt;/FirstName&gt;
     &lt;LastName>Sov&lt;/LastName>
     &lt;Title>Queen&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
    &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
    &lt;Address&gt;Reef&lt;/Address&gt;
   &lt;/Contact&gt;
   <Department>HR</Department>
  </Information>
  <Information>
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>John&lt;/FirstName&gt;
     &lt;LastName>Doe&lt;/LastName>
     &lt;Title>Mr.&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
    &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
    &lt;Address&gt;Antartica&lt;/Address&gt;
   &lt;/Contact&gt;
  &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>Mara&lt;/FirstName&gt;
     &lt;LastName>Sov&lt;/LastName>
     &lt;Title>Queen&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
    &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
    &lt;Address&gt;Reef&lt;/Address&gt;
   &lt;/Contact&gt;
   <Department>HR</Department>
  </Information>
 </ns0:Messages>
</ns0:Message1>
请参见以下目标样本:

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
 <ns0:Message1>
  <Information>
   <Contact>
    <Name type="Data">
     <FirstName>John</FirstName>
     <LastName>Doe</LastName>
     <Title>Mr.</Title>
    </Name>
    <MobileNumber>0123456789</MobileNumber>
    <Email>johndoe@coldmail.com</Email>
    <Address>Antartica</Address>
   </Contact>
   <Contact>
    <Name type="Data">
     <FirstName>Mara</FirstName>
     <LastName>Sov</LastName>
     <Title>Queen</Title>
    </Name>
    <MobileNumber>9999999999</MobileNumber>
    <Email>marasov@reef.com</Email>
    <Address>Reef</Address>
   </Contact>
   <Department>HR</Department>
  </Information>
 <Information>
   <Contact>
    <Name type="Data">
     <FirstName>John</FirstName>
     <LastName>Doe</LastName>
     <Title>Mr.</Title>
    </Name>
    <MobileNumber>0123456789</MobileNumber>
    <Email>johndoe@coldmail.com</Email>
    <Address>Antartica</Address>
   </Contact>
   <Contact>
    <Name type="Data">
     <FirstName>Mara</FirstName>
     <LastName>Sov</LastName>
     <Title>Queen</Title>
    </Name>
    <MobileNumber>9999999999</MobileNumber>
    <Email>marasov@reef.com</Email>
    <Address>Reef</Address>
   </Contact>
   <Department>HR</Department>
  </Information>
</ns0:Message1>
</ns0:Messages>
<ns0:Messages>
 <ns0:Message1>
  <Information>
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>John&lt;/FirstName&gt;
     &lt;LastName>Doe&lt;/LastName>
     &lt;Title>Mr.&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
    &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
    &lt;Address&gt;Antartica&lt;/Address&gt;
   &lt;/Contact&gt;
  &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>Mara&lt;/FirstName&gt;
     &lt;LastName>Sov&lt;/LastName>
     &lt;Title>Queen&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
    &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
    &lt;Address&gt;Reef&lt;/Address&gt;
   &lt;/Contact&gt;
   <Department>HR</Department>
  </Information>
  <Information>
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>John&lt;/FirstName&gt;
     &lt;LastName>Doe&lt;/LastName>
     &lt;Title>Mr.&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
    &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
    &lt;Address&gt;Antartica&lt;/Address&gt;
   &lt;/Contact&gt;
  &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName>Mara&lt;/FirstName&gt;
     &lt;LastName>Sov&lt;/LastName>
     &lt;Title>Queen&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
    &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
    &lt;Address&gt;Reef&lt;/Address&gt;
   &lt;/Contact&gt;
   <Department>HR</Department>
  </Information>
 </ns0:Messages>
</ns0:Message1>
目前,我的XSL映射中的输出不是我所期望的

   <ns0:Messages>
     <ns0:Message1>
      &lt;Information&gt;
       &lt;Contact&gt;
        &lt;Name type=&quot;Data&quot;&gt;
         &lt;FirstName>John&lt;/FirstName&gt;
         &lt;LastName>Doe&lt;/LastName>
         &lt;Title>Mr.&lt;/Title&gt;
        &lt;/Name&gt;
        &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
        &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
        &lt;Address&gt;Antartica&lt;/Address&gt;
       &lt;/Contact&gt;
      &lt;Contact&gt;
        &lt;Name type=&quot;Data&quot;&gt;
         &lt;FirstName>Mara&lt;/FirstName&gt;
         &lt;LastName>Sov&lt;/LastName>
         &lt;Title>Queen&lt;/Title&gt;
        &lt;/Name&gt;
        &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
        &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
        &lt;Address&gt;Reef&lt;/Address&gt;
       &lt;/Contact&gt;
       &lt;Department&gt;HR&lt;/Department&gt;
      &lt;/Information&gt;
      &lt;Information&gt;
       &lt;Contact&gt;
        &lt;Name type=&quot;Data&quot;&gt;
         &lt;FirstName>John&lt;/FirstName&gt;
         &lt;LastName>Doe&lt;/LastName>
         &lt;Title>Mr.&lt;/Title&gt;
        &lt;/Name&gt;
        &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
        &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
        &lt;Address&gt;Antartica&lt;/Address&gt;
       &lt;/Contact&gt;
      &lt;Contact&gt;
        &lt;Name type=&quot;Data&quot;&gt;
         &lt;FirstName>Mara&lt;/FirstName&gt;
         &lt;LastName>Sov&lt;/LastName>
         &lt;Title>Queen&lt;/Title&gt;
        &lt;/Name&gt;
        &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
        &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
        &lt;Address&gt;Reef&lt;/Address&gt;
       &lt;/Contact&gt;
       &lt;Department&gt;HR&lt;/Department&gt;
      &lt;/Information&gt;
     </ns0:Messages>
    </ns0:Message1>

信息节点及其子节点部门也将被转义。我只需要转义联系人段及其所有子节点。

以下是样式表的更正版本:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">


  <xsl:template match="*">
    <xsl:text disable-output-escaping="no">&lt;</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:apply-templates select="@*"/>
    <xsl:text disable-output-escaping="no">&gt;</xsl:text>
    <xsl:apply-templates select="node()"/>
    <xsl:text disable-output-escaping="no">&lt;/</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:text disable-output-escaping="no">&gt;</xsl:text>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:text disable-output-escaping="no">&#32;</xsl:text>
    <xsl:value-of select="name()" disable-output-escaping="no"/>
    <xsl:text disable-output-escaping="yes">=&amp;quot;</xsl:text>
    <xsl:value-of select="." disable-output-escaping="no"/>
    <xsl:text disable-output-escaping="yes">&amp;quot;</xsl:text>
  </xsl:template>

  <xsl:template match="ns0:Messages | ns0:Message1 |Information | Department">
      <xsl:copy>
          <xsl:apply-templates select="@*"/>
          <xsl:apply-templates/>
      </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
模板无效,因此已被删除

这就是我目前所得到的:

<?xml version="1.0" encoding="UTF-8"?><ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
 <ns0:Message1>
  <Information>
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName&gt;John&lt;/FirstName&gt;
     &lt;LastName&gt;Doe&lt;/LastName&gt;
     &lt;Title&gt;Mr.&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;0123456789&lt;/MobileNumber&gt;
    &lt;Email&gt;johndoe@coldmail.com&lt;/Email&gt;
    &lt;Address&gt;Antartica&lt;/Address&gt;
   &lt;/Contact&gt;
   &lt;Contact&gt;
    &lt;Name type=&quot;Data&quot;&gt;
     &lt;FirstName&gt;Mara&lt;/FirstName&gt;
     &lt;LastName&gt;Sov&lt;/LastName&gt;
     &lt;Title&gt;Queen&lt;/Title&gt;
    &lt;/Name&gt;
    &lt;MobileNumber&gt;9999999999&lt;/MobileNumber&gt;
    &lt;Email&gt;marasov@reef.com&lt;/Email&gt;
    &lt;Address&gt;Reef&lt;/Address&gt;
   &lt;/Contact&gt;
   <Department>HR</Department>
  </Information>
  <!-- More elements ... -->
 </ns0:Message1>
</ns0:Messages>

您可以在这里看到它的工作原理:

让我测试一下这个potamehi sir potame!我认为它起作用了,我可以再添加一个节点吗?我没有注意到这一点,我道歉。有一个子节点的内部信息和父节点的联系,这是。详细信息与部门处于同一级别,也应包含在输出中。不转义然后可以在模板的匹配元素列表中添加标记