我看过这个问题,这与我遇到的问题相同: XSL Conversion XML->XML outputs only text?
但是我声明了一个默认命名空间,并且仍未创建标签,我只是得到一个文本块。
这是我的 XSLT 的开始(它很大,所以我不会发布很多)
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<xsl:template match="/x">
<PatientData>
<xsl:value-of select="x:Patientdata"/>
<Versionnumber>
<xsl:value-of select="x:Patientdata/Versionnumber"/>
</Versionnumber>
<Patient>
<xsl:value-of select="x:Patientdata/Patient"/>
<PatientCharacterstics>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics"/>
<patientCode>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/patientCode"/>
</patientCode>
<identifier>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/identifier"/>
</identifier>
<sex>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/sex"/>
</sex>
<dateOfBirth>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/dateOfBirth"/>
</dateOfBirth>
<DebutOfSymptoms>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/DebutOfSymptoms"/>
</DebutOfSymptoms>
我得到的只是一大块文本作为输出,而不是一个标签。
编辑:根据要求的一些示例输入 XML,它是一个压缩版本来说明,基本上 xslt 只是重新排列 xml 文件元素的顺序:
<Patientdata>
<Versionnumber>1</Versionnumber>
<Patient>
<PatientCharacteristics>
<dateOfBirth>1900-01-01</dateOfBirth>
<patientCode>1</patientCode>
<DebutOfSymptoms>1935-01-01</DebutOfSymptoms>
<sex>1</sex>
<identifier>7705</identifier>
</PatientCharacteristics>
</Patient>
<Patient>
<PatientCharacteristics>
<dateOfBirth>1919-01-01</dateOfBirth>
<patientCode>3</patientCode>
<DebutOfSymptoms>1925-01-01</DebutOfSymptoms>
<sex>2</sex>
<identifier>7405</identifier>
</PatientCharacteristics>
</Patient>
</Patientdata>
编辑2:我已将其缩减为裸组件
XSLT:
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<xsl:template match="/">
<PatientData>
<xsl:value-of select="x:Patientdata"/>
<Versionnumber>
<xsl:value-of select="x:Patientdata/x:Versionnumber"/>
</Versionnumber>
<Patient>
<xsl:value-of select="x:Patientdata/x:Patient"/>
<PatientCharacterstics>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics"/>
<patientCode>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/patientCode"/>
</patientCode>
<identifier>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/identifier"/>
</identifier>
<sex>
<xsl:value-of select="x:Patientdata/x:Patient/x:PatientCharacteristics/x:sex"/>
</sex>
<dateOfBirth>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/dateOfBirth"/>
</dateOfBirth>
<DebutOfSymptoms>
<xsl:value-of select="x:Patientdata/Patient/PatientCharacteristics/DebutOfSymptoms"/>
</DebutOfSymptoms>
</PatientCharacterstics>
</Patient>
</PatientData>
</xsl:template>
</xsl:stylesheet>
这是我的 XML
<?xml version="1.0"?>
<Patientdata>
<Versionnumber>1</Versionnumber>
<Patient>
<PatientCharacteristics>
<dateOfBirth>1900-01-01</dateOfBirth>
<patientCode>1</patientCode>
<DebutOfSymptoms>1935-01-01</DebutOfSymptoms>
<sex>1</sex>
<identifier>7705</identifier>
</PatientCharacteristics>
</Patient>
<Patient>
<PatientCharacteristics>
<dateOfBirth>1919-01-01</dateOfBirth>
<patientCode>3</patientCode>
<DebutOfSymptoms>1925-01-01</DebutOfSymptoms>
<sex>2</sex>
<identifier>7405</identifier>
</PatientCharacteristics>
</Patient>
</Patientdata>
这是输出:
<?xml version='1.0' ?>
<PatientData xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Versionnumber/>
<Patient>
<PatientCharacterstics>
<patientCode/>
<identifier/>
<sex/>
<dateOfBirth/>
<DebutOfSymptoms/>
</PatientCharacterstics>
</Patient>
</PatientData>
当输出应该是:
<?xml version="1.0"?>
<Patientdata>
<Versionnumber>1</Versionnumber>
<Patient>
<PatientCharacteristics>
<patientCode>1</patientCode>
<identifier>7705</identifier>
<sex>1</sex>
<dateOfBirth>1900-01-01</dateOfBirth>
<DebutOfSymptoms>1935-01-01</DebutOfSymptoms>
</PatientCharacteristics>
</Patient>
<Patient>
<PatientCharacteristics>
<patientCode>3</patientCode>
<identifier>7405</identifier>
<dateOfBirth>1919-01-01</dateOfBirth>
<sex>2</sex>
<DebutOfSymptoms>1925-01-01</DebutOfSymptoms>
</PatientCharacteristics>
</Patient>
</Patientdata>