输入XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="trans.xsl"?>
<rootecf>
<XBRL>
<Name>Akhil</Name>
</XBRL>
<PI20>
<Address>Villa</Address>
</PI20>
</rootecf>
输出XML:
<?xml version="1.0"?>
<rootecf>
<XBRL>
<Name>Akhil</Name>
<PI20Addres>Villa</PI20Addres>
</XBRL>
我在这里要做的是,在输出XML中,我创建了一个名为<PI20Addres>
的新标记,其值为PI20/Address
标记。这里重要的一点是,我不希望XBRL
标记在output XML
中被硬编码,因为我有硬编码的PI20Adress
标记,而是应该从输入中读取{{1}并且应对原样。
我说的原因是XML
标记的名称空间将在传入的XBRL
中随机更改,因此我必须复制标记而不是硬编码。
任何人都可以告诉我如何使用XML
来实现这一目标?
答案 0 :(得分:0)
trans.xsl
可能如下所示:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<rootecf>
<XBRL>
<Name><xsl:value-of select="/rootecf/XBRL/Name"/></Name>
<PI20Address><xsl:value-of select="/rootecf/PI20/Address"/></PI20Address>
</XBRL>
</rootecf>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
当应用于您提供的单个示例时,这将返回请求的输出:
XSLT 1.0
<?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="/rootecf">
<rootecf>
<xsl:element name="{local-name(*)}">
<Name><xsl:value-of select="*/Name"/></Name>
<PI20Addres><xsl:value-of select="*/Address"/></PI20Addres>
</xsl:element>
</rootecf>
</xsl:template>
</xsl:stylesheet>