如果这看起来非常基本,我道歉。这是我第一次转换xml文件。 Android应用程序呈现的xml文件的格式似乎与我在youtube上的教程或我正在阅读的导入LibreOffice Calc的资源中看到的不一致。以下是从我的手机通话记录中转储的数据示例:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<!--File Created By Call Logs Backup & Restore v3.45 on 22/12/2014 11:27:17-->
<?xml-stylesheet type="text/xsl" href="calls.xsl"?>
<calls count="3">
<call number="+15555555555" duration="46" date="1401396504704" type="1" readable_date="May 29, 2014 4:48:24 PM" contact_name="(Unknown)" />
<call number="+15555555555" duration="62" date="1401487115708" type="1" readable_date="May 30, 2014 5:58:35 PM" contact_name="ICE-In Case of Emergency" />
<call number="+15555555555" duration="51" date="1401559219530" type="1" readable_date="May 31, 2014 2:00:19 PM" contact_name="ICE-In Case of Emergency" />
</calls>
从我所做的研究来看,要创建一个xslt转换样式表,该数据的结构必须更像这样:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<!--File Created By Call Logs Backup & Restore v3.45 on 22/12/2014 11:27:17-->
<?xml-stylesheet type="text/xsl" href="calls.xsl"?>
<calls count="3">
<call>
<number>+15555555555</number>
<duration>46</duration>
<date>1401396504704</date>
<type>1</type>
<readable_date>May 29, 2014 4:48:24 PM</readable_date>
<contact_name>(Unknown)</contact_name>
</call>
<call>
<number>+15555555555</number>
<duration>62</duration>
<date>1401487115708</date>
<type>1</type>
<readable_date>May 30, 2014 5:58:35 PM</readable_date>
<contact_name>ICE-In Case of Emergency</contact_name>
</call>
<call>
<number>+15555555555</number>
<duration>51</duration>
<date>1401559219530</date>
<type>1</type>
<readable_date>May 31, 2014 2:00:19 PM</readable_date>
<contact_name>ICE-In Case of Emergency</contact_name>
</call>
</calls>
对于使用目前的xml文件,我是否缺少一些东西?我试图获得手机应用程序的作者的支持,该应用程序创建了这个xml文件,但没有运气。我是否必须将源编辑为更合适的格式,如第二个屏幕截图?
感谢阅读。
答案 0 :(得分:0)
您发布的两个XML文件都是有效且格式正确的。如果问题是哪个的格式正确,由引用的calls.xsl
处理,则需要知道calls.xsl
的内容。您认为以某种不寻常的格式存在的第一个 XML非常常见 - 每个call
节点都有多个属性 - number
,duration
,{{1}在 second XML中,每个date
节点包含call
,number
,duration
等作为子节点,其值为文本。
虽然不确定这可能是用于转换的date
,但我发现了这个:
http://android.riteshsahu.com/wp-content/uploads/2010/04/calls.xsl。
只是这个模板的相关部分:
calls.xsl
对于此模板,第一个输入XML是正确的版本。当这个calls.xsl应用于你的第一个XML时,会生成以下结果 - 例如只有一行 - 为了可读性而添加了缩进:
<xsl:for-each select="calls/call">
<tr>
<td>
<xsl:if test="@type = 1">
Incoming
</xsl:if>
<xsl:if test="@type = 2">
Outgoing
</xsl:if>
<xsl:if test="@type = 3">
Missed
</xsl:if>
</td>
<td>
<xsl:value-of select="@number"/>
</td>
<td>
<xsl:value-of select="@contact_name"/>
</td>
<td>
<xsl:value-of select="@date"/>
<br/>
<xsl:value-of select="@readable_date"/>
</td>
<td>
<xsl:value-of select="@duration"/>
</td>
</tr>
</xsl:for-each>