我想寫出4個問題,不管它們是否存在。到目前爲止,我的方法是select =「// NTE_NotesAndCommentsSegment_2/NTE_3_Comment」,它檢索所有3條評論。但我有XSLT如果選擇包含「值」
麻煩選擇
NTE_3_Comment
其含有「問題1」(字符串值)寫出問題4當問題不存在。
我還需要輸出
SETID
的正確數字。
注意:該問題實際上並沒有數字。我使用ID來排序輸出。
輸入XML:
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>1</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 1 ? Answer 1</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>1</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 2 ? Answer 2</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>1</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 3? Answer 3</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
預期輸出XML:
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>1</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 1 ? Answer 1</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>2</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 2 ? Answer 2</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>3</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 3 ? Answer 3</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>4</NTE_1_SetIdNotesAndComments>
<NTE_2_SourceOfComment></NTE_2_SourceOfComment>
<NTE_3_Comment>Question 4 ? *Blank* </NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
我要找的建議,可以幫助我改變我的方法來此解決方案。提前致謝。
解決方法:感謝@ O.R.Mapper建議。無論問題是否存在,所有四個問題都會寫出來。如果問題在源中不存在,答案將顯示爲空白。
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>1</NTE_1_SetIdNotesAndComments>
<NTE_3_Comment>Question 1 ?<xsl:value-of select="substring-after(//NTE_NotesAndCommentsSegment_2/NTE_3_Comment[starts-with(text(),'Question 1')],'?')"/>
</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>2</NTE_1_SetIdNotesAndComments>
<NTE_3_Comment>Question 2 ?<xsl:value-of select="substring-after(//NTE_NotesAndCommentsSegment_2/NTE_3_Comment[starts-with(text(),'Question 2')],'?')"/>
</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>3</NTE_1_SetIdNotesAndComments>
<NTE_3_Comment>Question 3 ?<xsl:value-of select="substring-after(//NTE_NotesAndCommentsSegment_2/NTE_3_Comment[starts-with(text(),'Question 3')],'?')"/>
</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
<NTE_NotesAndCommentsSegment_2>
<NTE_1_SetIdNotesAndComments>4</NTE_1_SetIdNotesAndComments>
<NTE_3_Comment>Question 4 ? <xsl:value-of select="substring-after(//NTE_NotesAndCommentsSegment_2/NTE_3_Comment[starts-with(text(),'Question 4')],'?')"/>
</NTE_3_Comment>
</NTE_NotesAndCommentsSegment_2>
你是什麼意思「選擇NTE_3_Comment它包含問題1「? –
我正在尋找一個特定的字符串。在這個例子中,我會尋找「問題1」。 –
由於這與Biztalk映射有關,所以如果添加源和目標模式(部分),它可能會有所幫助。源'NTE_1_SetIdNotesAndComments'確實總是值'1'? – Filburt