我试图将XML文件转换为另一个XML文件。这是我的输入文件:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="inlamning.xsl"?>
<Ansokan>
<forskola_namn>Kopparholmen</forskola_namn>
<barn persunnummer="200505051111">
<namn>Niklas Niklasson</namn>
<syskon_pnr>200606061111</syskon_pnr>
<allergi>Laktos</allergi>
</barn>
<vardnadshavare personnummer="198606061111">
<fornamn>Magnus</fornamn>
<efternamn>Niklasson</efternamn>
<adress>
<hem>Magnusgatan 10</hem>
<jobb>Jobbgatan 1</jobb>
</adress>
<telefon>
<hem>0520-12345</hem>
<mobil>077-731731</mobil>
</telefon>
</vardnadshavare>
<vardnadshavare personnummer="198605051111">
<fornamn>Hanna</fornamn>
<efternamn>Niklasson</efternamn>
<adress>
<hem>Magnusgatan 10</hem>
<jobb>Jobbgatan 5</jobb>
</adress>
<telefon>
<hem></hem>
<mobil>077-721721</mobil>
</telefon>
</vardnadshavare>
<annat_ommande_skal>Inget</annat_ommande_skal>
</Ansokan>
这是我尝试做的转换后的XML:
<begaranominkomstuppgift>
<person personnummer="">
<fornamn></fornamn>
<efternamn></efternamn>
</person>
<person personnummer="">
<fornamn></fornamn>
<efternamn></efternamn>
</person>
</begaranominkomstuppgift>
我尝试做的是,创建一个新根<begaranominkomstuppgift>
并将2个vardnadshavare作为<person>
使用该属性,并仅使用vardnadshavare <fornamn>
和{{ 1}}。
这是我的XSL文件:
<efternamn>
XSL文件可能没有获取正确的信息。而且在转换后我无法看到标签。我的意思是即使我选择了正确的信息,它也不会在转换后显示xml标签。我哪里错了?
答案 0 :(得分:2)
我认为您想要做的是以下内容。您的解决方案与我的解决方案之间最显着的差异:
<xsl:element name="person">
,只需使用<person>
person
内,我使用copy-of
复制两个元素XSLT样式表
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/Ansokan">
<begaranominkomstuppgift>
<xsl:apply-templates/>
</begaranominkomstuppgift>
</xsl:template>
<xsl:template match="vardnadshavare">
<person personnummer="{@personnummer}">
<xsl:copy-of select="fornamn | efternamn"/>
</person>
</xsl:template>
<xsl:template match="text()"/>
</xsl:transform>
XML输出
<?xml version="1.0" encoding="UTF-8"?>
<begaranominkomstuppgift>
<person personnummer="198606061111">
<fornamn>Magnus</fornamn>
<efternamn>Niklasson</efternamn>
</person>
<person personnummer="198605051111">
<fornamn>Hanna</fornamn>
<efternamn>Niklasson</efternamn>
</person>
</begaranominkomstuppgift>
在线试用此解决方案here。
XSL文件可能没有获取正确的信息。而且在转换后我无法看到标签。我的意思是即使我选择了正确的信息,它也不会在转换后显示xml标签。我在哪里做错了?
原始XSLT代码的问题在于:1)其中一条xsl:element
指令未关闭; 2)personnummer
不能是xsl:element
的属性。您必须使用xsl:attribute
:
<xsl:element name="person">
<xsl:attribute name="personnummer" select="@personnummer"/>
此外,您在value
和of
之间使用的连字符在某种程度上无法被处理器识别。
但通常,如果转换是&#34;不显示标签&#34;它是因为名称空间。您的输入文档可能没有向我们显示的默认命名空间。