You could try to compare the value being less than a specific amount, however, you would have to structure your rules in a way to avoid logic errors. For example, if you had three rules: if x is less than 100, if x is less than 10, etc., you would have to set the rules that work with higher numbers first. For example, 1 is less than 10, but it's also less than 100, so which value would it receive? I prefer to use the string length, that way I know that 2 digits will always produce numbers between 10-99, three digits 100-999, etc. Sorry, if this is confusing!
You're right, infopath doesn't have an "if-then" statement, but I created a simple expression that would handle this. I used the following expression as my condition:
string-length(xpath of DocNum) = 2
Then if the DocNum had 2 digits I would set the following value in the text field:
concat(DocType,"-",ISONum,"00-",DocNum)
If DocNum had 3 digits then I would set the same value, but with one zero less.
You would need three or so rules to get your results. I hope this makes sense!!