xml データベースにコンテンツを保存する必要があります。データベース内の一部のデータは次のようになります。
<item>
<span class ="person">Henry 8<sup>th</sup></span>
</item>
<item>
<span class="company">Berkley & Jensen</span>
</item>
データを dom オブジェクトにロードし、loadXML()
それを xsl スタイルシートに渡し、そこで xpath と css を使用してさらに操作する必要があります。<sup>
データをロードすると、「&」が原因でコードが壊れ、「クラス」で css と xpathを使用する必要があるため、すべてのエンティティを変換したくありません。エンコードされたエンティティが原因で失敗する可能性があります。不正な文字を保存および取得するにはどうすればよいですか?
コメントがあるため、サンプルの php スクリプトを提供しています。php タグを追加すると、実行されるはずです。CDATA のご提案ありがとうございます。私はそれを使用して問題を示しました。「block」タグを XPATH のターゲットとして使用しようとすると正常に動作しますが、「span」タグを使用しようとすると何も出力されません。
$xsl = <<<XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="doContent" match="/">
<div class="story">
<xsl:for-each select="//body/block"> <xsl:copy-of select="." />
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
XSL;
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<content id="test" >
<headline>test</headline>
<author>test</author>
<body>
<block id="1"><![CDATA[<span class="normal"><p>1</p></span>]]></block>
<block id="2"><![CDATA[<span class=""><p>2</p></span>]]></block>
<block id="3"><![CDATA[<span class ="person">Henry 8<sup>th</sup></span>]]></block>
<block id="4"><![CDATA[<span class="company">Berkley & Jensen</span>]]></block>
<block id="5"><![CDATA[<span class=""><p>5</p></span>]]></block>
<block id="6"><![CDATA[<span class=""><p>6</p></span>]]></block>
</body>
</content>
XML;
$xslDoc = new DOMDocument();
$xslDoc->loadXML($xsl);
$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($xml);
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);