使用 XSLT 将 XML 转换为另一个 XML
Transforming XML to another XML with XSLT
我正在尝试使用 XSLT 将 XML 文件转换为另一个 XML 文件,但我得到的只是一个空白页。
我正在尝试改造这个XML
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xslt.xslt"?>
<ForskoleAnsokan>
<Vardnadshavare>
<Vardtagare>
<Fornamn>Arne</Fornamn>
<Efternamn>Jonsson</Efternamn>
<Personnummer>8802202220</Personnummer>
<Adress>Galavägen 13</Adress>
<Postnummer>46444</Postnummer>
<Postort>Trandhatan</Postort>
<Kontakt>072283832</Kontakt>
</Vardtagare>
<Vardtagare>
<Fornamn>Gunilla</Fornamn>
<Efternamn>Jonsson</Efternamn>
<Personnummer>8702102110</Personnummer>
<Adress>Galavägen 13</Adress>
<Postnummer>46444</Postnummer>
<Postort>Trandhatan</Postort>
<Kontakt>073262613</Kontakt>
</Vardtagare>
</Vardnadshavare>
</ForskoleAnsokan>
使用此 XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="@Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="@Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="@Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
</xsl:stylesheet>
进入这个xml
<begaranominkomstuppgift>
<person personnummer="8802202220">
<fornamn>Arne</fornamn>
<efternamn>Jonsson</efternamn>
</person>
<person personnummer="8702102110">
<fornamn>Gunilla</fornamn>
<efternamn>Jonsson</efternamn>
</person>
</begaranominkomstuppgift>
但我得到的只是一个空白页
将您的 XSL 更改为:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
</xsl:stylesheet>
您在 value-of 调用中使用了属性访问器 (@),但那些数据项只是元素,而不是属性。
如果要显示文字,需要将输出改为html。将您的 xslt.xsl 文件更改为:
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
请注意,我删除了 @
,因为它们用于访问属性而非简单元素。
另请注意,您的 xml 实际上已经在转换,但正如您所说,它显示为空白页,我想您正尝试在浏览器中查看,然后需要将输出更改为 html。例如,如果您检查页面,您会看到输出了 xml。
另请注意,将输出更改为 html 不会显示实际的 XML,而是将其解释为 html,然后输出一些内容。 要查看您的确切 xml,只需右键单击页面并单击检查。
另请注意,这不适用于 chrome。
我正在尝试使用 XSLT 将 XML 文件转换为另一个 XML 文件,但我得到的只是一个空白页。
我正在尝试改造这个XML
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xslt.xslt"?>
<ForskoleAnsokan>
<Vardnadshavare>
<Vardtagare>
<Fornamn>Arne</Fornamn>
<Efternamn>Jonsson</Efternamn>
<Personnummer>8802202220</Personnummer>
<Adress>Galavägen 13</Adress>
<Postnummer>46444</Postnummer>
<Postort>Trandhatan</Postort>
<Kontakt>072283832</Kontakt>
</Vardtagare>
<Vardtagare>
<Fornamn>Gunilla</Fornamn>
<Efternamn>Jonsson</Efternamn>
<Personnummer>8702102110</Personnummer>
<Adress>Galavägen 13</Adress>
<Postnummer>46444</Postnummer>
<Postort>Trandhatan</Postort>
<Kontakt>073262613</Kontakt>
</Vardtagare>
</Vardnadshavare>
</ForskoleAnsokan>
使用此 XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="@Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="@Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="@Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
</xsl:stylesheet>
进入这个xml
<begaranominkomstuppgift>
<person personnummer="8802202220">
<fornamn>Arne</fornamn>
<efternamn>Jonsson</efternamn>
</person>
<person personnummer="8702102110">
<fornamn>Gunilla</fornamn>
<efternamn>Jonsson</efternamn>
</person>
</begaranominkomstuppgift>
但我得到的只是一个空白页
将您的 XSL 更改为:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
</xsl:stylesheet>
您在 value-of 调用中使用了属性访问器 (@),但那些数据项只是元素,而不是属性。
如果要显示文字,需要将输出改为html。将您的 xslt.xsl 文件更改为:
<xsl:template match="/">
<begaranominkomstuppgift>
<xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare">
<person>
<xsl:attribute name="Personnummer">
<xsl:value-of select="Personnummer"/>
</xsl:attribute>
<Fornamn>
<xsl:value-of select="Fornamn"/>
</Fornamn>
<Efternamn>
<xsl:value-of select="Efternamn"/>
</Efternamn>
</person>
</xsl:for-each>
</begaranominkomstuppgift>
</xsl:template>
请注意,我删除了 @
,因为它们用于访问属性而非简单元素。
另请注意,您的 xml 实际上已经在转换,但正如您所说,它显示为空白页,我想您正尝试在浏览器中查看,然后需要将输出更改为 html。例如,如果您检查页面,您会看到输出了 xml。
另请注意,将输出更改为 html 不会显示实际的 XML,而是将其解释为 html,然后输出一些内容。 要查看您的确切 xml,只需右键单击页面并单击检查。
另请注意,这不适用于 chrome。