我有一個關於XML轉換的問題,我有一個XML可以轉換爲另一個XML。 我的xls非常簡單,只需要我想要的字段。我注意到的是,如果例如我有1,2,3,4並且在我的xsl中,我只是決定我想要1,3這2也會與它一起。我相信我讀了xsl的默認規則,例如:忽略XSL中的XML標記
我需要爲每個標記創建一個規則,即使是我不想要的規則。我如何處理那些我不想要的東西? (我嘗試了一些東西,但它仍然輸出它)。 在直接XML 2 XML翻譯中是否有任何教程或好的頁面?
所有的見解都很棒,我更多地去google了。
謝謝。
這是我的XSL,因爲它目前爲不匹配過濾器上:
<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml" />
<!--FileImport-->
<xsl:template match="FileImport">
<FileImport>
<xsl:apply-templates />
</FileImport>
</xsl:template>
<!--Start-->
<xsl:template match="Start">
<Start>
<xsl:apply-templates />
</Start>
</xsl:template>
<xsl:template match="StartParam">
<StartParam>
<xsl:attribute name="name">
<xsl:value-of select="@name" />
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="@value" />
</xsl:attribute>
</StartParam>
</xsl:template>
<!-- CLip -->
<xsl:variable name="fields" select="'|clip|number|technical_comments|channel|'" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="Clip">
<xsl:copy>
<xsl:apply-templates select=
"*[contains($fields, concat('|', @name, '|'))]" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
,有點我的XML是
<?xml version="1.0" encoding="windows-1252" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<FileImport>
<Global>
<GlobalParam name="RollName" value="Scene1" />
<GlobalParam name="TapeOrg" value="10:00:00:00" />
<GlobalParam name="ReadStart" value="00:00:00:00" />
<GlobalParam name="ReadDuration" value="00:02:26:18" />
</Global>
<Roll>
<Field name="ingest_report" value="<?xml version="1.0" standalone="yes"?>
<DataSet1
</Roll>
<Clip>
<Field name="audio_format" value="" group="Ingest" />
<Field name="camera_id" value="" group="Ingest" />
</Clip>
</FileImport>
,希望我的輸出會看起來像
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="testFIDEF.xsl"?>
<FileImport>
<Global>
<GlobalParam name="RollName" value="Scene_Around_Six_Tape_3_BUFVC003-14 10:00:00:00" />
<GlobalParam name="TapeOrg" value="10:00:00:00" />
<GlobalParam name="ReadStart" value="00:00:00:00" />
<GlobalParam name="ReadDuration" value="00:02:26:18" />
</Global>
<MasterClip>
<Field name="clip_description" value="Interview Captain Austin Ardill re Terence O'Neill" group="Ingest" />
<Field name="rushes_roll_number" value="BUFVC003" group="Ingest" />
<Field name="source_image_format" value="" group="Ingest" />
<Field name="technical_comments" value="" group="Ingest" />
</MasterClip>
</FileImport>
如果您發佈了一些代碼,那麼我們可以看到您出錯的位置,這將非常有用。 –
這實際上取決於您的變換的設計。 –
你在說什麼,我覺得還不夠。例如,通過指令' '將模板應用於當前上下文的所有子項。如果你不明確地管理這些孩子,內置的規則將在後臺工作,因此有些驚喜。你應該現在顯示XML輸入和想要的輸出。 –