我正在使用xslt转换xml文档。我需要使用输出转义来获取结果,因为无论我尝试做什么,我使用的工作服务器都只会输出<site/>
的结束标记。我发现了这句话,这证实了我的问题。
XSLT输出一个结果树,它不输出标记(除非使用禁用输出转义破解)。是序列化程序获取结果树并生成适当的标记。如果生成XML,请使用<xsl:output method="xml"/>
。序列化程序将决定是使用<textarea></textarea>
还是<textarea/>
。在XML中,这两种形式完全等效,因此任何XML使用者都会接受
我希望我得到的文档看起来像
<?xml version="1.0" encoding="utf-8"?>
<sites>
<site>
<pole>
NAM
</pole>
<territory>
Northeast
</territory>
<position>
FSR
</position>
<platform>
Mobile
</platform>
<latitude>
-76.631056373393
</latitude>
<longitude>
36.98237439172
</longitude>
<firstName>
Justin
</firstName>
<lastName>
Rhodes
</lastName>
</site>
<site>
<pole>
NAM
</pole>
<territory>
Northeast
</territory>
<position>
FSR
</position>
<platform>
Mobile
</platform>
<latitude>
-71.454786492200
</latitude>
<longitude>
42.995647573539
</longitude>
<firstName>
Kevin
</firstName>
<lastName>
Woods
</lastName>
</site>
</sites>
我正在使用以下xslt文档:
<?xml version="1.0" encoding="UTF-8"?>
<!-- New document created with EditiX at Mon Jun 03 12:57:03 EDT 2013 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:output method = "xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<sites>
<xsl:for-each select="/ViewAll/ROW">
<site>
<pole>
<xsl:value-of select="SC_DF_FIELD_1/text()"/>
</pole>
<territory>
<xsl:value-of select="SC_DF_FIELD_2/text()"/>
</territory>
<position>
<xsl:value-of select="SC_DF_FIELD_3/text()"/>
</position>
<platform>
<xsl:value-of select="SC_DF_FIELD_4/text()"/>
</platform>
<latitude>
<xsl:value-of select="SC_DF_FIELD_5/text()"/>
</latitude>
<longitude>
<xsl:value-of select="SC_DF_FIELD_6/text()"/>
</longitude>
<firstName>
<xsl:value-of select="SC_DF_FIELD_8/text()"/>
</firstName>
<lastName>
<xsl:value-of select="SC_DF_FIELD_9/text()"/>
</lastName>
</site>
</xsl:for-each>
</sites>
<xsl:apply-templates/>
</xsl:template>
<!--This causes everything else in the document output to be ignored -->
<xsl:template match="text()"/>
</xsl:stylesheet>
我正在将xslt应用于这个xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="myFirstTemplate4.xsl"?>
<ViewAll>
<RECORDSET_METADATA>
<STARTREC>1</STARTREC>
<KEYFIELDS>False</KEYFIELDS>
<ENDREC>2</ENDREC>
<TOTALREC>2</TOTALREC>
<PAme_NO>1</PAme_NO>
<SORT_TYPE>DT_UPDATED</SORT_TYPE>
<SORT_ORDER>desc</SORT_ORDER>
<FORM_ID>427384</FORM_ID>
<REPORT_ID></REPORT_ID>
<SAVED_ID></SAVED_ID>
<NEXTSORTORDER>
<![CDATA[&sortorder=desc]]>
</NEXTSORTORDER>
<SC_DF_XSL_HELP_URL>
<![CDATA[http://libraries.me.com/LibrariesWiki/2767051101/Data%20Forms%20- %20Customizing%20Records%20View]]>
</SC_DF_XSL_HELP_URL>
<FILTER_DATA>
<![CDATA[var AdvSrchFltrXML_String = { AdvSrchFltrData : { filter : [ {selElementType : '',selElementParentDF : '',selComb : '',exclCheck : '',selElement : '',query : '',query_psrch : '',includeNull : '',lockFilter : '',lockFilterFlg : '',dateFrom : '',dateTo : '',betweenDaysFrom : '',betweenDaysTo : '',betweenDaysFromOption : '',betweenDaysToOption : '',exactDaysOption : '',exactDays : '',moreThanOption : '',moreThan : '',NumAgingQuery : '',betweenNumFrom : '',betweenNumTo : '',GreaterOrLessOrEqualToNum : '',dateFromFormat : '',dateToFormat : ''} ] },size : 1, HiddenXMLFilterCount :''}]]>
</FILTER_DATA>
<FILTER_FIELDS>
<![CDATA[ var arrFields = new Array(new Array("form_doc_id","Entry #","req","","","","",""),new Array("LOGmeD_BY","Logmed By","psrch","","","","","1"),new Array("DT_LOGmeD","Date Logmed","dt","","","","",""),new Array("LAST_UPDATED_BY","Last Updated By","psrch","","","","","1"),new Array("DT_UPDATED","Date Updated","dt","","","","",""))]]>
</FILTER_FIELDS>
<meNERATE_HIDDEN_VAR>
<![CDATA[]]>
</meNERATE_HIDDEN_VAR>
<HIDDEN_XML_FILTER_COUNT>
<![CDATA[]]>
</HIDDEN_XML_FILTER_COUNT>
<HIDDEN_FILTER_REMOVE_NUMBER>
<![CDATA[]]>
</HIDDEN_FILTER_REMOVE_NUMBER>
<DF_LINK_FIELDS_VAR>
<![CDATA[]]>
</DF_LINK_FIELDS_VAR>
<SA_UPLOAD_FLAG>
<![CDATA[-1]]>
</SA_UPLOAD_FLAG>
<FLG_EXPORT_PDF_WORD>0</FLG_EXPORT_PDF_WORD>
<FLG_DISABLE_BULK_UPDATE_APPEND>0</FLG_DISABLE_BULK_UPDATE_APPEND>
<FLG_EXPORT_KML>1</FLG_EXPORT_KML>
<FLG_EXPORT_TO_MAP>0</FLG_EXPORT_TO_MAP>
<PUBLISHED_FLAG>0</PUBLISHED_FLAG>
<STR_CREATE_ORDER>402</STR_CREATE_ORDER>
<FUNC_CREATE_ORDER>asc</FUNC_CREATE_ORDER>
<FORM_NAME>Map Points</FORM_NAME>
<PROD_ID>267672</PROD_ID>
<ARCHIVE_FLAG>0</ARCHIVE_FLAG>
<FACILITATOR_FLAG>1</FACILITATOR_FLAG>
<ADVANCED_SEARCH_FLAG>1</ADVANCED_SEARCH_FLAG>
<EXPORT_ALL_FLAG>1</EXPORT_ALL_FLAG>
<EXPORT_PAme_FLAG>0</EXPORT_PAme_FLAG>
<DELETE_RECORD_FLAG>1</DELETE_RECORD_FLAG>
<FIELDCHOOSER_EDIT_FLAG>1</FIELDCHOOSER_EDIT_FLAG>
<FIELDCHOOSER_COPY_FLAG>1</FIELDCHOOSER_COPY_FLAG>
<RSS_FEED>1</RSS_FEED>
<FIELD_CHOOSER_ENABLE_FLAG>1</FIELD_CHOOSER_ENABLE_FLAG>
<ARCHIVE_ALL_ENABLE_FLAG>1</ARCHIVE_ALL_ENABLE_FLAG>
<TRUNCATE_TEXT_FLAG>0</TRUNCATE_TEXT_FLAG>
<CALLED_FOR></CALLED_FOR>
<CALLING_ENTITY_TYPE></CALLING_ENTITY_TYPE>
<EXCELUPLOADFLAG>true</EXCELUPLOADFLAG>
<VIEWAUDITTRAIL>1</VIEWAUDITTRAIL>
<STATICSERVER>//supportcentral.mecdn.com</STATICSERVER>
<VIEWERS_DETAIL>
<V_SSO_ID>218012021</V_SSO_ID>
<V_PERSON_ID>1273277</V_PERSON_ID>
<V_FIRST_NAME>meoffrey</V_FIRST_NAME>
<V_LAST_NAME>melinas</V_LAST_NAME>
<V_BUSINESS_SEGMENT>Power & Water</V_BUSINESS_SEGMENT>
<V_FOCUS_GROUP>me Power & Water</V_FOCUS_GROUP>
<V_SUB_BUSINESS>PW-WTR Water</V_SUB_BUSINESS>
<V_LANGUAme>english</V_LANGUAme>
<V_FUNCTION>Services</V_FUNCTION>
</VIEWERS_DETAIL>
</RECORDSET_METADATA>
<DFLINK_ELEMENT_DETAILS>
<CalledForSF display_name="CalledForSF" search_field="No">&nbsp</CalledForSF>
<SOURCE_ELEMENT_ID display_name="SOURCE_ELEMENT_ID" search_field="No">&nbsp</SOURCE_ELEMENT_ID>
<TARmeT_ELEMENT_ID display_name="TARmeT_ELEMENT_ID" search_field="No">&nbsp</TARmeT_ELEMENT_ID>
</DFLINK_ELEMENT_DETAILS>
<DF_FIELDS>
<SC_SYS_DF_FORM_DOC_ID display_name="Entry #" search_field="Yes">Entry #</SC_SYS_DF_FORM_DOC_ID>
<SC_SYS_DF_DT_LOGmeD display_name="Date Logmed" search_field="Yes">Logmed Date</SC_SYS_DF_DT_LOGmeD>
<SC_SYS_DF_DT_UPDATED display_name="Date Updated" search_field="Yes">Last Updated Date</SC_SYS_DF_DT_UPDATED>
<SC_SYS_DF_LOGmeD_BY display_name="Logmed By" search_field="Yes">Logmed by</SC_SYS_DF_LOGmeD_BY>
<SC_SYS_DF_LAST_UPDATED_BY display_name="Last Updated By" search_field="Yes">Last Updated By</SC_SYS_DF_LAST_UPDATED_BY>
<SC_SYS_DF_AUDIT_TRAIL_HEADER display_name="Audit Trail" search_field="Yes">Audit Trail</SC_SYS_DF_AUDIT_TRAIL_HEADER>
</DF_FIELDS>
<HEADER>
<SC_SYS_DF_FORM_DOC_ID display_name="Entry #" search_field="Yes">Entry #</SC_SYS_DF_FORM_DOC_ID>
<SC_SYS_DF_DT_LOGmeD display_name="Date Logmed" search_field="Yes">Logmed Date</SC_SYS_DF_DT_LOGmeD>
<SC_SYS_DF_DT_UPDATED display_name="Date Updated" search_field="Yes">Last Updated Date</SC_SYS_DF_DT_UPDATED>
<SC_SYS_DF_LOGmeD_BY display_name="Logmed By" search_field="Yes">Logmed by</SC_SYS_DF_LOGmeD_BY>
<SC_SYS_DF_LAST_UPDATED_BY display_name="Last Updated By" search_field="Yes">Last Updated By</SC_SYS_DF_LAST_UPDATED_BY>
<SC_SYS_DF_AUDIT_TRAIL display_name="Audit Trail" search_field="Yes">Audit Trail</SC_SYS_DF_AUDIT_TRAIL>
<SC_DF_FIELD_1 display_name="Poll" element_type="d" el_values="NAM;LAM;APAC;EUR;MEA" search_field="No">Poll</SC_DF_FIELD_1>
<SC_DF_FIELD_2 display_name="Territory" element_type="d" el_values="Northeast;Southeast;Midwest;West;Plains;Canada" search_field="No">Territory</SC_DF_FIELD_2>
<SC_DF_FIELD_3 display_name="Position" element_type="d" el_values="FSR" search_field="No">Position</SC_DF_FIELD_3>
<SC_DF_FIELD_4 display_name="Platform" element_type="d" el_values="BOO;Mobile;UF/MBR;Captial" search_field="No">Platform</SC_DF_FIELD_4>
<SC_DF_FIELD_5 display_name="Longitude" element_type="t" search_field="No">Longitude</SC_DF_FIELD_5>
<SC_DF_FIELD_6 display_name="Latitude" element_type="t" search_field="No">Latitude</SC_DF_FIELD_6>
<SC_DF_FIELD_8 display_name="First Name" element_type="t" search_field="No">First Name</SC_DF_FIELD_8>
<SC_DF_FIELD_9 display_name="Last Name" element_type="t" search_field="No">Last Name</SC_DF_FIELD_9>
</HEADER>
<ROW edit_access="1">
<SC_SYS_DF_FORM_DOC_ID_ACTION display_name="Entry # For Actions">
<![CDATA[6526927427]]>
</SC_SYS_DF_FORM_DOC_ID_ACTION>
<SC_SYS_DF_FORM_DOC_ID display_name="Entry #">
<![CDATA[6526927427]]>
<ENTRY_VIEW_URL display_name="View Entry URL">
<![CDATA[http://supportcentral.me.com/dataforms/sup_dataform_display.asp?dataform_id=427384&dataform_doc_id=6526927427]]>
</ENTRY_VIEW_URL>
</SC_SYS_DF_FORM_DOC_ID>
<SC_SYS_DF_DT_LOGmeD display_name="Date Logmed">
<![CDATA[6/3/2013 11:48:27 AM]]>
</SC_SYS_DF_DT_LOGmeD>
<SC_SYS_DF_DT_UPDATED display_name="Date Updated">
<![CDATA[6/3/2013 11:48:27 AM]]>
</SC_SYS_DF_DT_UPDATED>
<SC_SYS_DF_LOGmeD_BY display_name="Logmed By">
<![CDATA[ ]]>
<PERSON>
<SC_DF_PERSON_LINK display_name="Profile Url">
<![CDATA[../common/sup_persondtls.asp?p_id=1273277]]>
</SC_DF_PERSON_LINK>
<SC_DF_SSO display_name="">
<![CDATA[218012021]]>
</SC_DF_SSO>
<SC_DF_EMAIL display_name="Email">
<![CDATA[meoffrey.melinas@me.com]]>
</SC_DF_EMAIL>
<SC_DF_FIRST_NAME display_name="First Name">
<![CDATA[meoffrey]]>
</SC_DF_FIRST_NAME>
<SC_DF_LAST_NAME display_name="Last Name">
<![CDATA[melinas]]>
</SC_DF_LAST_NAME>
</PERSON>
<PERSON_STRING>
<PERSON_STRING_VAR display_name="person person person">
<![CDATA[var person_String = {person : [ {PERSON_ID : '../common/sup_persondtls.asp?p_id=1273277',FIRST_NAME : 'meoffrey',LAST_NAME:'melinas'}], size : 1 }]]>
</PERSON_STRING_VAR>
</PERSON_STRING>
</SC_SYS_DF_LOGmeD_BY>
<SC_SYS_DF_LAST_UPDATED_BY display_name="Last Updated By">
<![CDATA[ ]]>
<PERSON>
<SC_DF_PERSON_LINK display_name="Profile Url">
<![CDATA[../common/sup_persondtls.asp?p_id=1273277]]>
</SC_DF_PERSON_LINK>
<SC_DF_SSO display_name="">
<![CDATA[218012021]]>
</SC_DF_SSO>
<SC_DF_EMAIL display_name="Email">
<![CDATA[meoffrey.melinas@me.com]]>
</SC_DF_EMAIL>
<SC_DF_FIRST_NAME display_name="First Name">
<![CDATA[meoffrey]]>
</SC_DF_FIRST_NAME>
<SC_DF_LAST_NAME display_name="Last Name">
<![CDATA[melinas]]>
</SC_DF_LAST_NAME>
</PERSON>
<PERSON_STRING>
<PERSON_STRING_VAR display_name="person person person">
<![CDATA[var person_String = {person : [ {PERSON_ID : '../common/sup_persondtls.asp?p_id=1273277',FIRST_NAME : 'meoffrey',LAST_NAME:'melinas'}], size : 1 }]]>
</PERSON_STRING_VAR>
</PERSON_STRING>
</SC_SYS_DF_LAST_UPDATED_BY>
<SC_SYS_DF_AUDIT_TRAIL display_name="Audit Trail">
<![CDATA[<a href="../caseforms/complete_audit_trail.asp?calling_entity_id=427384&form_doc_id=6526927427&pameNo=0&auditType=0&callinmentity=4" tarmet="_none">Audit Trail</a>]]>
</SC_SYS_DF_AUDIT_TRAIL>
<SC_DF_FIELD_1 display_name="Poll" element_type="d">
<![CDATA[NAM]]>
</SC_DF_FIELD_1>
<SC_DF_FIELD_2 display_name="Territory" element_type="d">
<![CDATA[Northeast]]>
</SC_DF_FIELD_2>
<SC_DF_FIELD_3 display_name="Position" element_type="d">
<![CDATA[FSR]]>
</SC_DF_FIELD_3>
<SC_DF_FIELD_4 display_name="Platform" element_type="d">
<![CDATA[Mobile]]>
</SC_DF_FIELD_4>
<SC_DF_FIELD_5 display_name="Longitude" element_type="t" data_type="alpha">
<![CDATA[-76.631056373393]]>
</SC_DF_FIELD_5>
<SC_DF_FIELD_6 display_name="Latitude" element_type="t" data_type="alpha">
<![CDATA[36.98237439172]]>
</SC_DF_FIELD_6>
<SC_DF_FIELD_8 display_name="First Name" element_type="t" data_type="alpha">
<![CDATA[Justin]]>
</SC_DF_FIELD_8>
<SC_DF_FIELD_9 display_name="Last Name" element_type="t" data_type="alpha">
<![CDATA[Rhodes]]>
</SC_DF_FIELD_9>
</ROW>
<ROW edit_access="1">
<SC_SYS_DF_FORM_DOC_ID_ACTION display_name="Entry # For Actions">
<![CDATA[6526927192]]>
</SC_SYS_DF_FORM_DOC_ID_ACTION>
<SC_SYS_DF_FORM_DOC_ID display_name="Entry #">
<![CDATA[6526927192]]>
<ENTRY_VIEW_URL display_name="View Entry URL">
<![CDATA[http://supportcentral.me.com/dataforms/sup_dataform_display.asp?dataform_id=427384&dataform_doc_id=6526927192]]>
</ENTRY_VIEW_URL>
</SC_SYS_DF_FORM_DOC_ID>
<SC_SYS_DF_DT_LOGmeD display_name="Date Logmed">
<![CDATA[6/3/2013 11:47:41 AM]]>
</SC_SYS_DF_DT_LOGmeD>
<SC_SYS_DF_DT_UPDATED display_name="Date Updated">
<![CDATA[6/3/2013 11:47:41 AM]]>
</SC_SYS_DF_DT_UPDATED>
<SC_SYS_DF_LOGmeD_BY display_name="Logged By">
<![CDATA[ ]]>
<PERSON>
<SC_DF_PERSON_LINK display_name="Profile Url">
<![CDATA[../common/sup_persondtls.asp?p_id=1273277]]>
</SC_DF_PERSON_LINK>
<SC_DF_SSO display_name="">
<![CDATA[218012021]]>
</SC_DF_SSO>
<SC_DF_EMAIL display_name="Email">
<![CDATA[meoffrey.melinas@me.com]]>
</SC_DF_EMAIL>
<SC_DF_FIRST_NAME display_name="First Name">
<![CDATA[meoffrey]]>
</SC_DF_FIRST_NAME>
<SC_DF_LAST_NAME display_name="Last Name">
<![CDATA[melinas]]>
</SC_DF_LAST_NAME>
</PERSON>
<PERSON_STRING>
<PERSON_STRING_VAR display_name="person person person">
<![CDATA[var person_String = {person : [ {PERSON_ID : '../common/sup_persondtls.asp?p_id=1273277',FIRST_NAME : 'meoffrey',LAST_NAME:'melinas'}], size : 1 }]]>
</PERSON_STRING_VAR>
</PERSON_STRING>
</SC_SYS_DF_LOGmeD_BY>
<SC_SYS_DF_LAST_UPDATED_BY display_name="Last Updated By">
<![CDATA[ ]]>
<PERSON>
<SC_DF_PERSON_LINK display_name="Profile Url">
<![CDATA[../common/sup_persondtls.asp?p_id=1273277]]>
</SC_DF_PERSON_LINK>
<SC_DF_SSO display_name="">
<![CDATA[218012021]]>
</SC_DF_SSO>
<SC_DF_EMAIL display_name="Email">
<![CDATA[meoffrey.melinas@me.com]]>
</SC_DF_EMAIL>
<SC_DF_FIRST_NAME display_name="First Name">
<![CDATA[meoffrey]]>
</SC_DF_FIRST_NAME>
<SC_DF_LAST_NAME display_name="Last Name">
<![CDATA[melinas]]>
</SC_DF_LAST_NAME>
</PERSON>
<PERSON_STRING>
<PERSON_STRING_VAR display_name="person person person">
<![CDATA[var person_String = {person : [ {PERSON_ID : '../common/sup_persondtls.asp?p_id=1273277',FIRST_NAME : 'meoffrey',LAST_NAME:'melinas'}], size : 1 }]]>
</PERSON_STRING_VAR>
</PERSON_STRING>
</SC_SYS_DF_LAST_UPDATED_BY>
<SC_SYS_DF_AUDIT_TRAIL display_name="Audit Trail">
<![CDATA[<a href="../caseforms/complete_audit_trail.asp?calling_entity_id=427384&form_doc_id=6526927192&pameNo=0&auditType=0&callinmentity=4" tarmet="_none">Audit Trail</a>]]>
</SC_SYS_DF_AUDIT_TRAIL>
<SC_DF_FIELD_1 display_name="Poll" element_type="d">
<![CDATA[NAM]]>
</SC_DF_FIELD_1>
<SC_DF_FIELD_2 display_name="Territory" element_type="d">
<![CDATA[Northeast]]>
</SC_DF_FIELD_2>
<SC_DF_FIELD_3 display_name="Position" element_type="d">
<![CDATA[FSR]]>
</SC_DF_FIELD_3>
<SC_DF_FIELD_4 display_name="Platform" element_type="d">
<![CDATA[Mobile]]>
</SC_DF_FIELD_4>
<SC_DF_FIELD_5 display_name="Longitude" element_type="t" data_type="alpha">
<![CDATA[-71.454786492200]]>
</SC_DF_FIELD_5>
<SC_DF_FIELD_6 display_name="Latitude" element_type="t" data_type="alpha">
<![CDATA[42.995647573539]]>
</SC_DF_FIELD_6>
<SC_DF_FIELD_8 display_name="First Name" element_type="t" data_type="alpha">
<![CDATA[Kevin]]>
</SC_DF_FIELD_8>
<SC_DF_FIELD_9 display_name="Last Name" element_type="t" data_type="alpha">
<![CDATA[Woods]]>
</SC_DF_FIELD_9>
</ROW>
</ViewAll>
你有没有想过如何才能得到我想要的结果?
提前感谢!
当使用Saxon运行您提供的XSLT代码时,(据我所知)会产生您想要的输出。你的输出有什么不同,你是如何获得的?
您肯定不需要禁用输出转义。
无论如何,你的问题都很困惑。你说"无论你做什么,你都会得到<site/>
的结束标记",但(a)<site/>
不是结束标记,它是一个空元素标记,(b)你没有解释为什么你不想要结束标记。你说你想要输出转义,这是正常的默认值,那么你为什么对禁用输出转义感兴趣呢?