Xml 仅子节点的XSL转义字符
我试图转义子节点和字段的字符。我希望保留其他父节点的和。这可以通过XSL实现吗?当我现在进行测试时,所有字符都会转义,包括父节点的 我在Chris Scott去世前两周从StackOverflow那里得到了这个密码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"
<?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"><</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="@*"/>
<xsl:text disable-output-escaping="no">></xsl:text>
<xsl:apply-templates select="node()"/>
<xsl:text disable-output-escaping="no"></</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text disable-output-escaping="no">></xsl:text>
</xsl:template>
<xsl:template match="@*">
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:value-of select="name()" disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">=&quot;</xsl:text>
<xsl:value-of select="." disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">&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>
<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: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>
<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:Messages>
</ns0:Message1>
目前,我的XSL映射中的输出不是我所期望的
<ns0:Messages>
<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: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"><</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="@*"/>
<xsl:text disable-output-escaping="no">></xsl:text>
<xsl:apply-templates select="node()"/>
<xsl:text disable-output-escaping="no"></</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text disable-output-escaping="no">></xsl:text>
</xsl:template>
<xsl:template match="@*">
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:value-of select="name()" disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">=&quot;</xsl:text>
<xsl:value-of select="." disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">&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>
<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>
<!-- More elements ... -->
</ns0:Message1>
</ns0:Messages>
您可以在这里看到它的工作原理:让我测试一下这个potamehi sir potame!我认为它起作用了,我可以再添加一个节点吗?我没有注意到这一点,我道歉。有一个子节点的内部信息和父节点的联系,这是。详细信息与部门处于同一级别,也应包含在输出中。不转义然后可以在模板的匹配元素列表中添加标记