0

モデルベースのウィンドウを印刷するためにXML->XHTL変換を使用しています。私がしていることは、モデルを整形式のxmlに変換することです。そして、それにxslを適用します。

モデルのいくつかの属性には大きなテキスト値があります。このテキストには、「<」および「>」が含まれる場合があります。このようなテキストが表示される場合は常に、「<」と「>」の間のテキストはスキップされます。たとえば、私のテキストが " This <item name> belongs to me."の場合、取得する出力は" This belongs to me."<アイテム名>はスキップされます。属性の値に含まれるこれらの文字は、xmlタグの開始と終了としても識別されるようです。それらは&lt;に変換されます および&gt;。したがって、値は出力されません。

誰か教えてもらえますか、出力の属性の値に山かっこを保持するにはどうすればよいですか?どんな助けでも大歓迎です。

ありがとう、Sahitya

PS-私はxml処理とxslの初心者でもあります。

CDataセクションを含むXML: " <descriptionText><![CDATA[This <item name> belongs to me.]]></descriptionText>"

XSLの抜粋: <tr><td><xsl:value-of select="descriptionText" disable-output-escaping="yes"/></td></tr>

expectedOutput: This <item name> belongs to me.

実際の出力: This belongs to me.

編集:

アプリケーションレベルで印刷機能を実装するために、私はWebFrameLoadDelegateとNSPrintOperationのAPIを使用しています。Webビューが正常に作成されると、デリゲートAPI、

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;

プリンタクラスの、が呼び出されます。以下のこのAPIの実装を参照してください。

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    NSPrintInfo *pi = [NSPrintInfo sharedPrintInfo];
    if ([NSPrintInfo defaultPrinter])
    {
        [pi setPrinter:[NSPrintInfo defaultPrinter]]; 
    }
    [pi setTopMargin:5.0];
    [pi setLeftMargin:5.0];
    [pi setBottomMargin:10.0];
    [pi setRightMargin:5.0];
    [pi setHorizontalPagination:NSFitPagination];
    [pi setVerticalPagination:NSFitPagination];
    [pi setVerticallyCentered:YES];
    [pi setHorizontallyCentered:YES];
    [[self.webView preferences] setAutosaves: NO];
    [[self.webView preferences] setShouldPrintBackgrounds:YES];
    NSPrintOperation *printOperation = [[[self.webView mainFrame] frameView] printOperationWithPrintInfo:pi];
    [printOperation runOperationModalForWindow:self.window delegate:self.delegate didRunSelector:self.callbackSelector contextInfo:nil];
}
4

2 に答える 2

1

もし、あんたが

  1. XML入力に含まれるテキスト<をラップし&ますCDATA
  2. 使用しないでくださいdisable-output-escaping

次に、の出力はThis <item name> belongs to meになりますThis &lt;item name&gt; belongs to me。これは、ブラウザが次のように正しく表示します。This <item name> belongs to me.

をオン disable-output-escapingすると、生成されるHTMLはにThis <item name> belongs to meなり、ブラウザは<item name>、説明したように、未定義のHTMLタグであると見なし、それをスキップします。

編集

完全に機能する例を次に示します。

simple.xml(入力)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="simple.xslt"?>
<simple>
    <![CDATA[This <item name> belongs to me.]]>
</simple>

simple.xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

出力(ブラウザでxmlを開いたとき)

This <item name> belongs to me.
于 2012-07-05T07:59:09.613 に答える
0

HTMLテキストに山かっこを含めることはできません。山かっこは>および<としてエスケープする必要があります。CDATAセクションがHTMLへの変換の問題を解決していると思いますが、HTMLを表示すると、ブラウザーはタグを無視します。

于 2012-07-02T13:51:38.643 に答える