基于SO提供的关于XSLT: How to convert XML Node to String中的序列化的解决方案之一,我试图序列化这样的事情。
$scope.sms = {};
var options = {
replaceLineBreaks: false, // true to replace \n by a new line, false by default
android: {
intent: '' // send SMS with the default SMS app
}
};
$scope.smsSend = function () {
console.log($scope.sms.phno);
console.log($scope.sms.msg);
document.addEventListener("deviceready", function () {
$cordovaSms
.send($scope.sms.phno, $scope.sms.msg, options)
.then(function () {
// Success! SMS was sent
console.log('Success');
}, function (error) {
// An error occurred
console.log(error);
}); //then
});
};
由于我刚刚开始使用XSLT,我似乎无法找到一个包含命名空间和注释的解决方案。我试图在没有任何信息丢失的情况下包含所有内容,我想出了这个XSLT。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified">
<xs:annotation>
<xs:documentation>
Package Name: Master
version: 2
Description:
This is a dummy description used for testing purposes.
</xs:documentation>
</xs:annotation>
<!-- ********************************************************************************************************************
*** Includes
*************************************************************************************************************************-->
<!-- Basic Layer -->
<xs:include schemaLocation="dummy1.xsd"/>
<xs:include schemaLocation="dummy2.xsd"/>
<!-- ********************************************************************************************************************
*** Simple Types
*************************************************************************************************************************-->
<xs:simpleType name="YESNO">
<xs:restriction base="xs:string">
<xs:enumeration value="YES"/>
<xs:enumeration value="NO"/>
</xs:restriction>
</xs:simpleType>
<!-- ********************************************************************************************************************
*** Simple Types
*************************************************************************************************************************-->
<xs:complexType name="Custom" xdb:SQLType="L2A_CUSTOM_OT">
<xs:sequence>
<xs:element name="Postal" type="TPostal" />
<xs:element name="Entry" type="Entry" minOccurs="0" maxOccurs="8" />
</xs:sequence>
</xs:complexType>
</xs:schema>
答案 0 :(得分:2)
有关纯XSLT 1.0解决方案的信息,请参阅http://lenzconsulting.com/xml-to-string/,或者考虑是否可以使用具有XP {3.0支持https://www.w3.org/TR/xpath-functions-30/#func-serialize的Saxon 9.7等XSLT处理器来使用serialize
函数。
请注意,您所显示的方法并未考虑转义,例如<
在属性值或文本节点中为<
。因此,任何需要将结果解析为XML的人都可能会在这里询问如何强制XML解析器接受未转义的less than
(<
)符号或未转义的ampersand
(&
)符号。