私はしばらくこれに取り組んできましたが、どのような種類の実用的な解決策にもたどり着くことができませんでした。これはすべて xml バージョン 1 にあります。
dog_info.xml と呼ばれる最初のファイルには、次のようなものが含まれています。
<?xml version"1.0" encoding="UTF-8"?>
<dog_info version="2" dog_num="2" update_time="2013-15-05T14:80:00Z">
<dog_list xml: lang="en">
<dog id="1" name="Nikki" desc="Black with brown spots"/>
<dog id="2" name="Zulu" desc="Oreo color"/>
<dog id="3" name="Tyler" desc="brown dog"/>
<dog id="4" name="Sally" desc="milk color"/>
<dog id="5" name="Joe" desc="brown and grey color"/>
</dog_list>
<dog_list xml:lang="piggylatin">
<dog id="1" name="Nikky" desc="black spots with black and brown spots"/>
<dog id="2" name="apples" desc="green, red or blue apples"/>
<dog id="3" name="Taylor" desc="yellow dog"/>
<dog id="4" name="Susan" desc="a dog"/>
<dog id="5" name="Jason" desc="a cat"/>
</dog_list>
</dog_info>
profile.xml と呼ばれる 2 番目のファイルには、次のようなものがあります。
<?xml version="1.0" encoding="UTF-8"?>
<profile>
<animal-helper>
<animal>
<category>
<rule>
<value>1</value>
<deny />
</rule>
<rule>
<value>2</value>
<deny />
</rule>
</category>
</animal>
</animal-helper>
</profile>
3番目のファイルは私が書いているものですが、行き詰まっています。情報を表示するために html に解析できる xsl である必要があります。
profile.xml の値は 1 で、deny です。拒否の場合は、dog_list.xml の id と照合され、名前と説明が取得されます。他の拒否と同じです。
<allow />
タグはありませんが、 <deny />
. したがって、dog_list.xml の残りの ID はすべて許可されます。HTMLの独自のカテゴリにリストする必要があります。
また、言語が「piggylatin」または「en」でない場合、デフォルトで「en」になることにも注意する必要があります。どんな助けでも大歓迎です。
編集:
実際のファイルは非常に大きく、作業に使用されます。そのため、機能させるために必要なものに似たものを再作成する必要がありました。
私は次のようなものを持っています:
...
<xsl:for-each select="$HELPER/animal/category/rule[name=false()]">
<xsl:variable name="currentValue" select="value/text()"/>
<xsl:variable name="dogValue" select="$DOG_LIST"/>
<xsl:for-each select="$dogValue/dog[@id = $currentValue]">
<xsl:apply-templates/><xsl:if test="position() != last()"><xsl:text disable-output-escaping="yes"><![CDATA[<br />]]></xsl:text></xsl:if>
</xsl:for-each>
</xsl:for-each>
...
編集2:
上記のコードのスニペットは、html テーブル (拒否セクション) の一部です。次のようになります。
「否定」
ニッキー・
ズールー
「許可された」
タイラー
・サリー
・ジョー
したがって、"Deny" は値 1 と 2 を見つけ、id 1 と 2 に一致し、名前を返します。そして、「許可」は、ID 3、4、5 (1 と 2 のため) を検出し、拒否され、名前を返します。
この要素の目的は<deny />
、拒否された犬を選択してリストすることです。次に、それに基づいて、拒否されなかった他の「id」が許可されます。
私が書いたコードの上記の部分には、2 つの部分があります。「拒否」部分と「許可」部分。許可された部分は、最初に選択されなかった他の「ID」をテストする必要があります<deny />
。