2012-11-16 32 views
1

在XML我不是專家試圖導入一個日誌文件關閉打印機的XML文件的結果,我需要一個XLST文件 將其導入的FileMaker但什麼是錯的需要XLST來讀取的FileMaker

  • 結果是什麼我想要?
  • 下_Version結果= 3.05
  • 在 「autoDischargeComposition」 結果= 1
  • 在 「高度」 結果= 500.12077
  • 在 「Widht」 結果= 400.22566
  • 在 「scaleFixedRatio」 結果=真
  • 在 「高度」 結果= 56.20050
  • 在 「Widht」 結果= 56.10050

所以我ONL Ÿ需要的名字,並與XLST文件現在會發生什麼結果 是它只,得到

  • _Version 3.05
  • autoDischargeComposition 1
  • ,並跳過其餘!!!!

此打印機log.xml文件:

<?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> 

這是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> 
  • 任何幫助將不勝感激,謝謝

WN

回答

0

的問題是,你的「高度」和「寬度」的屬性,這些都是嵌套在無效

<void property="scaleRatio"> 
    <object class="cmn.math.DimDouble"> 
     <void property="height"> 

但是其他對象元素中,你只是在做<xsl:value-of select="void[@property='height']/string"/>獲得的價值,這將只在當前對象元素中尋找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> 

當適用於您的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

_Hi添Ç非常感謝你救我的週末.... – user1830057