需要XLST读取filemaker的XML文件结果
我不是xml专家,我想从打印机上导入一个日志文件,我需要一个xlst文件 将其导入filemaker,但出现问题需要XLST读取filemaker的XML文件结果,xml,parsing,xslt,import,filemaker,Xml,Parsing,Xslt,Import,Filemaker,我不是xml专家,我想从打印机上导入一个日志文件,我需要一个xlst文件 将其导入filemaker,但出现问题 我想要什么样的结果 低于_版本结果=3.05 在“自动放电合成”下,结果=1 “高度”下的结果=500.12077 在“Widht”下,结果=400.22566 在“scaleFixedRatio”下,结果=真 “高度”下的结果=56.20050 在“宽度”下,结果=56.10050 所以我只需要名字和结果 xlst文件现在的情况是,它只获取 _版本3.05 自动放电组件1 然
- 我想要什么样的结果
- 低于_版本结果=3.05
- 在“自动放电合成”下,结果=1
- “高度”下的结果=500.12077
- 在“Widht”下,结果=400.22566
- 在“scaleFixedRatio”下,结果=真
- “高度”下的结果=56.20050
- 在“宽度”下,结果=56.10050
- _版本3.05
- 自动放电组件1
- 然后跳过剩下的李>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_27" class="java.beans.XMLDecoder">
<object class="rip.properties.XmlEdit">
<void property="_VERSION">
<string>3.05</string>
</void>
<void property="autoDischargeComposition">
<int>1</int>
</void>
<void property="scale">
<object class="cmn.math.DimDouble">
<void property="height">
<double>500.12077</double>
</void>
<void property="width">
<double>400.22566</double>
</void>
</object>
</void>
<void property="scaleFixedRatio">
<boolean>true</boolean>
</void>
<void property="scaleRatio">
<object class="cmn.math.DimDouble">
<void property="height">
<double>56.20050</double>
</void>
<void property="width">
<double>56.10050</double>
</void>
</object>
</void>
</object>
</java>
3.05
1.
500.12077
400.22566
符合事实的
56.20050
56.10050
这是xlst文件
<?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="/">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>
<METADATA>
<FIELD NAME="_VERSION" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="autoDischargeComposition" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="scaleRatio" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
</METADATA>
<RESULTSET FOUND="">
<xsl:for-each select="java/object">
<ROW MODID="" RECORDID="">
<COL><DATA><xsl:value-of select="void[@property='_VERSION']/string"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='autoDischargeComposition']/int"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='height']/string"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='width']/string"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='scaleRatio']/string"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='height']/string"/></DATA></COL>
<COL><DATA><xsl:value-of select="void[@property='width']/string"/></DATA></COL>
</ROW>
</xsl:for-each>
</RESULTSET>
</FMPXMLRESULT>
</xsl:template>
</xsl:stylesheet>
0
- 任何帮助都将不胜感激 谢谢
WN问题在于,对于“高度”和“宽度”属性,它们嵌套在void中的其他对象元素中
<void property="scaleRatio">
<object class="cmn.math.DimDouble">
<void property="height">
但是,您只需执行
即可获得值,该值将仅查找当前对象元素中的void元素。我认为你应该做一些类似的事情来处理双重嵌套的空洞
<xsl:value-of
select="void[@property='scale']/object/void[@property='height']/double"/>
唯一的另一个问题是,您正在为“scaleRatio”元素寻找字符串值。我想你可能需要在这里使用scaleFixedRatio
尝试以下XSLT
<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="/">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>
<METADATA>
<FIELD NAME="_VERSION" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="autoDischargeComposition" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="scaleRatio" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
</METADATA>
<RESULTSET FOUND="">
<xsl:for-each select="java/object">
<ROW MODID="" RECORDID="">
<COL>
<DATA>
<xsl:value-of select="void[@property='_VERSION']/string"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='autoDischargeComposition']/int"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='scale']/object/void[@property='height']/double"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='scale']/object/void[@property='width']/double"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='scaleFixedRatio']/boolean"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='scaleRatio']/object/void[@property='height']/double"/>
</DATA>
</COL>
<COL>
<DATA>
<xsl:value-of select="void[@property='scaleRatio']/object/void[@property='width']/double"/>
</DATA>
</COL>
</ROW>
</xsl:for-each>
</RESULTSET>
</FMPXMLRESULT>
</xsl:template>
</xsl:stylesheet>
0
应用于XML时,将输出以下内容
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>
<METADATA>
<FIELD NAME="_VERSION" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="autoDischargeComposition" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="scaleRatio" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="height" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="width" TYPE="NUMBER" EMPTYOK="YES" MAXREPEAT=""/>
</METADATA>
<RESULTSET FOUND="">
<ROW MODID="" RECORDID="">
<COL>
<DATA>3.05</DATA>
</COL>
<COL>
<DATA>1</DATA>
</COL>
<COL>
<DATA>500.12077</DATA>
</COL>
<COL>
<DATA>400.22566</DATA>
</COL>
<COL>
<DATA>true</DATA>
</COL>
<COL>
<DATA>56.20050</DATA>
</COL>
<COL>
<DATA>56.10050</DATA>
</COL>
</ROW>
</RESULTSET>
</FMPXMLRESULT>
0
3.05
1.
500.12077
400.22566
符合事实的
56.20050
56.10050