需要使用xslt将xml文件转换为另一个xml,xslt的xsl文件使用Properties.xml文件
考虑我的输入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 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:更多
假的