2017-07-12 6 views
0

私はスポーツ結果を含むXMLファイルを持っていますが、読んで理解しやすくするためにはフォーマットして整理する必要があります。ノード(多分ノード名をテスト?)、名前は「タブ」であるならば、タブを挿入するように...私のxmlファイルは以下の通りである:ノード名に基づいてタブとCR/LFを入力してください

<?xml version="1.0"?> 
    <Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <Header> 
     </Header> 
     <Body><p><p><b><u>Wednesday 14 December 2016</u></b></p><p></p><p>10:30<tab>Atletico Nacional </tab><tab>v</tab><tab>Kashima Antlers </tab><i><tab><tab>(Suita City Football Stadium)</tab></tab></i><b><tab><tab></tab></tab></b></p></p><p><p><b><u>Thursday 15 December 2016</u></b></p><p></p><p>10:30<tab>Club America </tab><tab>v</tab><tab>Real Madrid </tab><i><tab><tab>(Yokohama International Stadium)</tab></tab></i><b><tab><tab></tab></tab></b></p></p></Body> 
    </Message> 

と予想される結果は、このようなものでなければなりません。

<?xml version="1.0" encoding="UTF-16" standalone="no"?> 
<!DOCTYPE NEWS SYSTEM "structure.dtd"> 
<OBJECT> 
<ID>12345</ID> 
<HEADER>SPORTS NEWS</HEADER> 
<OBJECT_BODY> 
Wednesday 14 December 2016 
10:30 Atletico Nacional v Kashima Antlers *(Suita City Football Stadium)* 
Thursday 15 December 2016 
10:30 Club America v Real Madrid *(Yokohama International Stadium)* 
</OBJECT_BODY> 
</OBJECT> 

ご協力いただきありがとうございました。

私はあなたが期待される出力に到着し、完全にどのように見ると言うが、あなたの出発点として、これを試すことができません
+0

出力はテキストファイルですか?どのようにあなたはそれをフォーマットするつもりですか? –

+0

コメントにコードを投稿しないでください。あなたの質問を編集し、期待される出力をコード**として投稿してください。 –

+0

@ michael.hor257k、私の出力方法はXMLですが、基本的には、このXMLファイルを、特定のNews-system用のスキーマファイルに基づいて別のXMLファイルに変換しようとしています。 (私の質問を更新しました) – JohnMiller

答えて

0

XSLT 1.0

<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:strip-space elements="*"/> 

<xsl:template match="/Message"> 
    <OBJECT> 
     <ID>12345</ID> 
     <HEADER>SPORTS NEWS</HEADER> 
     <xsl:apply-templates select="Body"/> 
    </OBJECT> 
</xsl:template> 

<xsl:template match="Body"> 
    <OBJECT_BODY> 
     <xsl:apply-templates/> 
    </OBJECT_BODY> 
</xsl:template> 

<xsl:template match="p"> 
    <xsl:text>&#10;</xsl:text> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="tab"> 
    <xsl:text>&#9;</xsl:text> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="i"> 
    <xsl:text>*</xsl:text> 
    <xsl:apply-templates/> 
    <xsl:text>*</xsl:text> 
</xsl:template> 

</xsl:stylesheet> 

必要な場合に追加のテンプレートを追加しますbu要素を処理します。

+0

私がここに書いた例はXML文書全体のほんの一部ですが、私のXSLTファイルも非常に長いシートなので、ここにすべてコピーすることはできませんでしたが、あなたの答えからのアイデアとそれは今、完璧に動作します...あなたの役に立つ答えとサポートに感謝します。 – JohnMiller

+0

"i"ノードのテキストを "イタリック"または "太字"にフォーマットする方法を教えてください。私は多くのテキストフォーマット方法を試しましたが、彼らは私のために運動しませんでした。 – JohnMiller

+0

@ JohnMiller XMLはプレーンテキスト形式です。イタリック体または太字体として「フォーマット」する方法はありません。あなたができる唯一のことは、ある種のマークアップを追加することです。 –

関連する問題