1

WML 教科書で見つけた変数でこの WML の例を実行しようとしていますが、同じ行/ステートメントで毎回エラーが発生します。これはコードです:

    <?xml version="1.0"?> 
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" 
 "http://www.wapforum.org/DTD/wml13.dtd"> 
<wml> 
<card id="card1" title="First Card" newcontext="true">
    <p>
        Card 1... <br/>
        card1 var1=$(card1_var1) <br/>
        card2 var1=$(card2_var1) <br/>
        card3 var1=$(card3_var1) <br/>
        <do type="accept" label="Next Card">
            <go href="#card2">
                <setvar name="card1_var1" value="val_1"/>
            </go>
        </do>
    </p>
</card>
<card id="card2" title="Second Card">
    <p>
        Card2 ...<br/>
        Card1 var1 = $(card1_var1) <br/>
        Card2 var1 = $(card2_var1) <br/>
        Card3 var1 = $(card3_var1) <br/>
        <do type="accept" label="First Card">
            <go href="#card1"/>
        </do>
        <do type="accept" label="Third Card">
            <go href="#card3">
                <setvar name="card2_var1" value="val_2"/>
            </go>
        </do>
        <do type="prev" label="Previous Card">
            <prev/>
        </do>
    </p>
</card>
<card id="card3" title="Third Card">
    <onevent type="onenterforward">
        <refresh>
            <setvar name="card3_var1 " value="val_3"/>
        </refresh>
    </onevent>
    <p>
        Card 3 ...<br/>
        Card1 var1 = $(card1_var1) <br/>
        Card2 var1 = $(card2_var1) <br/>
        Card3 var1 = $(card3_var1) <br/>
        <do type="prev" label="Previous">
            <prev/>
        </do>
    </p>
</card>

26行目でエラーが発生しています。タイプがそこで定義されているにもかかわらず、エラーが発生します。

4

1 に答える 1

0

投稿した例には、検証に失敗する原因となるいくつかのエラーがあります。これらは、StackOverflow に投稿するときのカットアンドペーストの問題、またはパーサーの失敗の原因となった可能性のある実際のエラーである可能性があります。

行 1: XML 宣言<?xml version="1.0"?>は最初の列にある必要があります。あなたの例では、インデントされています。

53 行目: WML の終了タグ</wml>がありません。


役に立つかもしれない 2 つの小さな修正もあります。

行 1: XML 宣言にエンコーディングを追加します。<?xml version="1.0" encoding="UTF-8"?>

行 40: 誤ったスペース文字があるname="card3_var1 "ため、変数が正しく更新されません


これらの修正を行うと、WML は W3C Validator に従って検証されるため、問題ないはずです。Openwave 6.2.2 SDK で試してみましたが、エラーなく動作するようです。

修正例:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" 
"http://www.wapforum.org/DTD/wml13.dtd"> 
<wml> 
<card id="card1" title="First Card" newcontext="true">
    <p>
        Card 1... <br/>
        card1 var1=$(card1_var1) <br/>
        card2 var1=$(card2_var1) <br/>
        card3 var1=$(card3_var1) <br/>
        <do type="accept" label="Next Card">
            <go href="#card2">
                <setvar name="card1_var1" value="val_1"/>
            </go>
        </do>
    </p>
</card>
<card id="card2" title="Second Card">
    <p>
        Card2 ...<br/>
        Card1 var1 = $(card1_var1) <br/>
        Card2 var1 = $(card2_var1) <br/>
        Card3 var1 = $(card3_var1) <br/>
        <do type="accept" label="First Card">
            <go href="#card1"/>
        </do>
        <do type="accept" label="Third Card">
            <go href="#card3">
                <setvar name="card2_var1" value="val_2"/>
            </go>
        </do>
        <do type="prev" label="Previous Card">
            <prev/>
        </do>
    </p>
</card>
<card id="card3" title="Third Card">
    <onevent type="onenterforward">
        <refresh>
            <setvar name="card3_var1" value="val_3"/>
        </refresh>
    </onevent>
    <p>
        Card 3 ...<br/>
        Card1 var1 = $(card1_var1) <br/>
        Card2 var1 = $(card2_var1) <br/>
        Card3 var1 = $(card3_var1) <br/>
        <do type="prev" label="Previous">
            <prev/>
        </do>
    </p>
</card>
</wml>
于 2014-03-01T16:36:07.567 に答える