2
將現有的xml修改爲包含標題部分。我試圖將「Header」元素的嵌套子元素「照原樣」複製到另一個xml文件中,但不能。XHtml轉換 - 複製heeder元素的嵌套子元素
的Xml與Header元素:
<?xml version="1.0" encoding="utf-8"?>
<QuestionText
xmlns:t="clr-namespace:Telerik.Windows.Documents.Model;assembly=Telerik.Windows.Documents"
xmlns:s="clr-namespace:Telerik.Windows.Documents.Model.Styles;assembly=Telerik.Windows.Documents"
xmlns:r="clr-namespace:Telerik.Windows.Documents.Model.Revisions;assembly=Telerik.Windows.Documents"
xmlns:n="clr-namespace:Telerik.Windows.Documents.Model.Notes;assembly=Telerik.Windows.Documents"
xmlns:th="clr-namespace:Telerik.Windows.Documents.Model.Themes;assembly=Telerik.Windows.Documents"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
**<Header>
<t:SubHeader SubHeaderAtt1="valA" SubHeaderAtt2="valB">
<t:SubSubHeader SubSubHeaderAtt1="valX" SubSubHeaderAtt2="valY">
</t:SubSubHeader>
</t:SubHeader>
<t:SubHeader SubHeaderAtt1="valC" SubHeaderAtt2="valD">
<t:SubSubHeader SubSubHeaderAtt1="valM" SubSubHeaderAtt2="valN">
</t:SubSubHeader>
</t:SubHeader>
</Header>**
<Content>
<p ListId="2" xmlns="">
<span StyleName="ss">Item 1</span>
</p>
<p ListId="2" xmlns="">
<span>Item 2</span>
</p>
<p ListId="2" xmlns="">
<span>Item 3</span>
</p>
<p ListId="3" xmlns="" />
</Content>
</QuestionText>
XSD複製標題:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:t="clr-namespace:Telerik.Windows.Documents.Model;assembly=Telerik.Windows.Documents"
xmlns:s="clr-namespace:Telerik.Windows.Documents.Model.Styles;assembly=Telerik.Windows.Documents"
xmlns:r="clr-namespace:Telerik.Windows.Documents.Model.Revisions;assembly=Telerik.Windows.Documents"
xmlns:n="clr-namespace:Telerik.Windows.Documents.Model.Notes;assembly=Telerik.Windows.Documents"
xmlns:th="clr-namespace:Telerik.Windows.Documents.Model.Themes;assembly=Telerik.Windows.Documents">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="QuestionText">
<t:RadDocument>
<xsl:copy>
<xsl:value-of select="Header/node()"/>
</xsl:copy>
<t:Section>
<!-- Avoided for brevity -->
</t:Section>
</t:RadDocument>
</xsl:template>
</xsl:stylesheet>
預期輸出:
<?xml version="1.0" encoding="utf-8"?>
<t:RadDocument xmlns:t="clr-namespace:Telerik.Windows.Documents.Model;assembly=Telerik.Windows.Documents"
xmlns:s="clr-namespace:Telerik.Windows.Documents.Model.Styles;assembly=Telerik.Windows.Documents"
xmlns:r="clr-namespace:Telerik.Windows.Documents.Model.Revisions;assembly=Telerik.Windows.Documents"
xmlns:n="clr-namespace:Telerik.Windows.Documents.Model.Notes;assembly=Telerik.Windows.Documents"
xmlns:th="clr-namespace:Telerik.Windows.Documents.Model.Themes;assembly=Telerik.Windows.Documents"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<t:SubHeader SubHeaderAtt1="valA" SubHeaderAtt2="valB">
<t:SubSubHeader SubSubHeaderAtt1="valX" SubSubHeaderAtt2="valY">
</t:SubSubHeader>
</t:SubHeader>
<t:SubHeader SubHeaderAtt1="valC" SubHeaderAtt2="valD">
<t:SubSubHeader SubSubHeaderAtt1="valM" SubSubHeaderAtt2="valN">
</t:SubSubHeader>
</t:SubHeader>
<t:Section>
<!-- Avoided for brevity -->
</t:Section>
</t:RadDocument>
我將不勝感激,如果任何人能解釋我是什麼缺少或如何解決問題。任何幫助都可以。
非常感謝。有沒有辦法避免使用元素的前綴?我之前使用過xslt,但從未使用前綴。 – teenboy
@teenboy你不必爲元素使用前綴。您只需在stylesheet_中定義一個前綴以用於其XPath表達式和匹配模式。 XPath在名稱空間格式良好的XML上運行,它所關心的是本地名稱和名稱空間URI。原始文檔中使用的前綴(或缺少前綴)和XPath表達式中使用的前綴不必相同,只需將它們映射到各自位置的相同URI即可。 –